mardi 31 mai 2016

Parcourir la liste des control sur un formulaire (CheckBox, TextBox, ComboBox...)


A placer dans un UserForm. Cela fonctionne sur n'importe quel type de control.

Dim objControl As Control

'variante 1
For Each objControl In Me.Controls
  If TypeOf objControl Is MSForms.TextBox Then 'modifier ici le type si nécessaire
    MsgBox objControl.Name
  End If
Next

'variante 2
For Each objControl In Me.Controls
  If TypeName(objControl) = "TextBox" Then 'modifier ici le type si nécessaire
    MsgBox objControl.Name
  End If
Next

mercredi 11 mai 2016

Vérification de la saisie dans une TextBox

A placer sur l'événement KeyPress d'une TextBox

Gestion de certaines valeurs autorisées :

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'n'accepte que les chiffres et le /
    If InStr("1234567890/", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
End Sub



Gestion de la décimale virgule / point

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 Select Case KeyAscii
    Case 44, 46 ' que l'on frappe une virgule ou un point
      If InStr(TextBox1.Text, ",") Then 'si déjà une virgule présent
         KeyAscii = 0 'on ne permet pas deux virgules
      Else ' sinon
        KeyAscii = 44 'on force la une virgule
      End If
    Case 48 To 57
      'on laisse passer car ce sont des chiffres
    Case Else
      KeyAscii = 0 'on ne laisse pas passer
 End Select
End Sub

mardi 8 mars 2016

Manipuler Word en Vba depuis Excel par exemple

'**************************************************************************************
'  Manipuler Word en VBA
'  ajouter la référence à Microsoft Word xx.x library au projet 

'  (Menu Projet >> Références...)
'**************************************************************************************
    

Sub GestionWord ()

   
Dim AppWord As Word.Application

    On Error Resume Next
 
    ' Cherche une instance de Word si elle existe
    Set AppWord = GetObject(, "Word.Application")
 
    If Err <> 0 Then
    ' Si GetObject échoue, utiliser CreateObject pour créer une instance de Word
        Set AppWord = CreateObject("Word.Application")
    End If
 
    ' ajoute un nouveau document
     AppWord.Documents.Add
      
     
' insère du texte au point d'insertion
     AppWord.Selection.TypeText Text:="Liste des Clients"

     ' sauter une ligne
     AppWord.Selection.TypeParagraph

     ' copie le contenu de A1 dans le document Word
     AppWord.Selection.TypeText Text:="" & Range("A1").Value

     ' enregistre les modifications
     AppWord.Documents.Save

     ' rend Word visible
     AppWord.Visible = True

    ' Quitte Word
     AppWord.Quit
 
    ' Vide l'objet en mémoire
    Set AppWord = Nothing


End Sub