un internaute
XLDnaute Impliqué
Bonjour le forum
Dans la macro ci-dessous lorsque le texte est trop long dans colonne B je fait Centre Texte Colonnes B - C pas de problème
Lorsqu'il est centré sur colonnes B - C le bouton devrait afficher Annuler Centrer Texte Colonnes B - C
mais n'affiche pas Annuler Centrer Texte Colonnes B - C
Il affiche Centrer Texte Colonnes B - C alors qu'il devrait afficher Annuler Centrer Texte Colonnes B - C
Idem pour F -G
PS: je ne peux pas fournir de fichier
Dans la macro ci-dessous lorsque le texte est trop long dans colonne B je fait Centre Texte Colonnes B - C pas de problème
Lorsqu'il est centré sur colonnes B - C le bouton devrait afficher Annuler Centrer Texte Colonnes B - C
mais n'affiche pas Annuler Centrer Texte Colonnes B - C
Il affiche Centrer Texte Colonnes B - C alors qu'il devrait afficher Annuler Centrer Texte Colonnes B - C
Idem pour F -G
PS: je ne peux pas fournir de fichier
VB:
Sub CentrerSurPlusieursColonnes()
Dim Ligne As Long, Colonne As Integer
Dim Ws As Worksheet
Dim Sh As Shape
Dim Nom As String
Dim ModeCentrage As Integer
Application.ScreenUpdating = False
' ActiveSheet.Unprotect
Ligne = Selection.Row
Colonne = Selection.Column
Set Sh = ActiveSheet.Shapes(Application.Caller)
If Sh.TopLeftCell.Address = "$I$2" Then
If Ligne < 6 Or Ligne > 36 Or Colonne < 6 Or Colonne > 7 Then
MsgBox ("Centrer ou Annulation Centrer Hors Zone : F6:G36")
Exit Sub
End If
With Sh.TextFrame
'On compare les 7 caractères de gauche(Left)en Majuscule(UCase)du Texte du bouton avec les caractères en Majuscule(UCase)du mot "Centrer".
If UCase(Left(.Characters.Text, 7)) = UCase("Centrer") Then
.Characters.Text = "Annuler Centrer Texte" & vbLf & "Colonnes F - G"
.Characters(Start:=1, Length:=15).Font.ColorIndex = 3
.Characters(Start:=16, Length:=16).Font.ColorIndex = 5
.Characters(Start:=32, Length:=5).Font.ColorIndex = 3
ModeCentrage = xlCenterAcrossSelection
Range("G" & Ligne) = Range("F" & Ligne)
Else
.Characters.Text = "Centrer Texte" & vbLf & "Colonnes F - G"
.Characters(Start:=1, Length:=7).Font.ColorIndex = 3
.Characters(Start:=8, Length:=16).Font.ColorIndex = 5
.Characters(Start:=24, Length:=5).Font.ColorIndex = 3
ModeCentrage = xlCenter
Range("G" & Ligne) = ""
End If
End With
With Range("F" & Ligne & ":G" & Ligne)
.HorizontalAlignment = ModeCentrage
.VerticalAlignment = xlCenter
End With
Else
If Ligne < 6 Or Ligne > 36 Or Colonne < 2 Or Colonne > 3 Then
MsgBox ("Centrer ou Annulation Centrer Hors Zone : B6:C36")
Exit Sub
End If
If Range("B" & Ligne) = "" Or Ligne > Range("A" & Rows.Count).End(xlUp).Row Or Ligne < 5 Then
Ligne = Range("A" & Rows.Count).End(xlUp).Row
End If
With Sh.TextFrame
'On compare les 7 caractères de gauche(Left)en Majuscule(UCase)du Texte du bouton avec les caractères en Majuscule(UCase)du mot "Centrer".
If UCase(Left(.Characters.Text, 7)) = UCase("Centrer") Then
.Characters.Text = "Annuler Centrer Texte" & vbLf & "Colonnes B - C"
.Characters(Start:=1, Length:=15).Font.ColorIndex = 3
.Characters(Start:=16, Length:=16).Font.ColorIndex = 5
.Characters(Start:=32, Length:=5).Font.ColorIndex = 3
ModeCentrage = xlCenterAcrossSelection
Else
.Characters.Text = "Centrer Texte" & vbLf & "Colonnes B - C"
.Characters(Start:=1, Length:=7).Font.ColorIndex = 3
.Characters(Start:=8, Length:=16).Font.ColorIndex = 5
.Characters(Start:=24, Length:=5).Font.ColorIndex = 3
ModeCentrage = xlCenter
ModeCentrage = xlCenter
End If
End With
'Calcul de la dernière ligne.Celle-ci sera automatiquement centrée sur les colonnes B & C en cliquant sur le Bouton Centrer Texte Sur Plusieurs Colonnes
With Range("B" & Ligne & ":C" & Ligne)
.HorizontalAlignment = ModeCentrage
.VerticalAlignment = xlCenter
End With
End If
' ActiveSheet.Protect
End Sub
Dernière édition: