un bouton pour deux macros inversées

MICHAEL

XLDnaute Occasionnel
Bonjour,

j'utilise ce code pour passer de min à maj et reciproquement.
pour cela j'ai besoin de deux bouton
un maj/min
un min/maj

mon souhait serai d'utiliser un seul bouton (à chaque clic dessus cela inverse la sélection)

pensez vous que cela soit possible apres modif du code

merci






Sub majuscules()

traite_casse ("maj")

End Sub

Sub minuscules()

traite_casse ("min")

End Sub

Sub traite_casse(comment As String)

Dim cellule As Range

For Each cellule In Selection

If (comment = "maj") Then
cellule = UCase(cellule)
Else
cellule = LCase(cellule)

End If

Next cellule

End Sub
 

Robert

XLDnaute Barbatruc
Bonjour Michael, bonjour le forum,

J'ai utilisé un bouton (CommandButton) issue de la barre d'outil Contrôles ActiveX avec comme propriété [Caption] : Changer la Casse et le code ci-dessous :

VB:
Private Sub CommandButton1_Click()
Dim PL As String 'déclare la variable PL (Premiere Lettre)

PL = Mid(Selection.Cells(1, 1), 1, 1) 'définit la première lettre du premier mot de la premiere cellule de la sélection
If Asc(PL) < 97 Then traite_casse ("min") Else traite_casse ("maj") 'agit en fonction du code ascii de PL
End Sub

Sub traite_casse(comment As String)
Dim cellule As Range

For Each cellule In Selection
  If (comment = "maj") Then
  cellule = UCase(cellule)
  Else
  cellule = LCase(cellule)
  End If
Next cellule
End Sub
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour,

j'utilise ce code pour passer de min à maj et reciproquement.
pour cela j'ai besoin de deux bouton
un maj/min
un min/maj
mon souhait serai d'utiliser un seul bouton (à chaque clic dessus cela inverse la sélection)
pensez vous que cela soit possible apres modif du code
upload_2019-2-20_11-17-37.png
VB:
Private Sub CommandButton1_Click()
    Dim cellule As Range, Casse As Boolean
        With CommandButton1
            .Caption = IIf(.Caption = "MAJ", "Min", "MAJ")
            Casse = (.Caption = "MAJ")
        End With
    DoEvents
    For Each cellule In Selection
        If Casse = True Then
            cellule = LCase(cellule)
        Else
            cellule = UCase(cellule)
        End If
    Next cellule
End Sub
 

MICHAEL

XLDnaute Occasionnel
Un grand merci à vous deux.
j'ai opter pour la solution de Robert qui, dans mon cas fonctionne parfaitement.
je vais cependant, par la suite tester celle de Modeste geedee.

quoiqu'il en soit encore mille fois merci.

cordialement
 
Haut Bas