cristobal61
XLDnaute Nouveau
Bonjour,
Cherchant à perfectionner mon tout petit niveau en vba, je bute sur le problème suivant...
J'ai rédigé pour m'entraîner une macro très élémentaire permettant d'appliquer en seule une opération les attributs gras et italique au contenu d'une cellule.
La macro fonctionne bien lorsque je ne sélectionne qu'une seule cellule, chaque clic sur le bouton associé permet de passer de non formaté à gras-italique, et vice versa.
En revanche, lorsque je sélectionne une plage de plusieurs cellule, je n'obtiens pas forcément le résultat escompté.
Je remarque que la macro ne fonctionne que quand la plage sélectionnée contient un nombre impair de cellules. Lorsque il y en a un nombre pair, la macro applique puis retire le formatage dans la même exécution.
Comment puis-je améliorer le code pour m'affranchir de ce problème ?
La solution est probablement évidente mais elle ne saute pas à mes yeux peu expérimentés.
Merci par avance à qui pourra m'éclairer.
Cherchant à perfectionner mon tout petit niveau en vba, je bute sur le problème suivant...
J'ai rédigé pour m'entraîner une macro très élémentaire permettant d'appliquer en seule une opération les attributs gras et italique au contenu d'une cellule.
La macro fonctionne bien lorsque je ne sélectionne qu'une seule cellule, chaque clic sur le bouton associé permet de passer de non formaté à gras-italique, et vice versa.
En revanche, lorsque je sélectionne une plage de plusieurs cellule, je n'obtiens pas forcément le résultat escompté.
Je remarque que la macro ne fonctionne que quand la plage sélectionnée contient un nombre impair de cellules. Lorsque il y en a un nombre pair, la macro applique puis retire le formatage dans la même exécution.
Code:
Sub GrasItalique()
Dim plage As Range
Dim cel As Range
Set plage = Selection
For Each cel In plage
If Selection.Font.Bold = False Or Selection.Font.Italic = False Then
Appliquer_GrasItalique
Else: Enlever_GrasItalique
End If
Next cel
End Sub
Sub Appliquer_GrasItalique()
Selection.Font.Italic = True
Selection.Font.Bold = True
End Sub
Sub Enlever_GrasItalique()
Selection.Font.Italic = False
Selection.Font.Bold = False
End Sub
Comment puis-je améliorer le code pour m'affranchir de ce problème ?
La solution est probablement évidente mais elle ne saute pas à mes yeux peu expérimentés.
Merci par avance à qui pourra m'éclairer.