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

lundi 23 mai 2016

Procédure pour supprimer du code VBA qui aurait été associé directement à une feuille de calcul

Sub PurgeCode()
    For Each VBComp In VBComps
        If VBComp.Type = 100 Then
           With VBComp.CodeModule
               .DeleteLines 1, .CountOfLines
           End With
        End If
    Next VBComp
End Sub

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