Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Microsoft 365Bouton ( forme ) pour lancer une macro avec changement de texte
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
j'espère que tu m'en voudras pas trop : j'ai supprimé tout ton code VBA, alors c'est inutile que tu cherches ta sub Rounded_Rectangle_1_Click() ; ni ta sub Cacher_colonne() ; ni ta sub afficher_colonne() ; à la place, je te propose ce code VBA avec une seule sub :
VB:
Option Explicit
Sub HideShowColumns()
Dim b As Boolean: b = Columns("L").Hidden: Columns("L:P").Hidden = Not b
ActiveSheet.Shapes("Rectangle 1").TextFrame.Characters.Text = _
IIf(b, "Masqu", "Affich") & "er les détails"
End Sub
si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis. 🙂
Dim b As Boolean : déclare une variable b, de type booléen ; cette variable booléenne peut donc contenir la valeur True (=Vrai) ou False (=Faux).
b = Columns("L").Hidden ; si la colonne L est cachée, ce qui est le cas quand on a masqué les colonnes L:P, alors b vaut True ; sinon : si la colonne L est visible, ce qui est le cas quand on a affiché les colonnes L:P, alors b vaut False.
Columns("L:P").Hidden = Not b : pour les colonnes L:P, on positionne Hidden à l'inverse de la valeur de b : si b = True (car L était cachée), alors ça met .Hidden = Not True ; donc .Hidden = False : on affiche L:P ; dans le cas contraire : si b = False (car L était visible), alors ça met .Hidden = Not False ; donc .Hidden = True : on masque L:P ; il s'agit donc bien d'une inversion de l'état caché ou non pour les colonnes L:P.
il reste plus qu'à afficher le texte correct dans la forme automatique, grâce à cette partie de l'instruction suivante : IIf(b, "Masqu", "Affich") & "er les détails" ; si b est True, ça affiche "Masqu" & "er les détails" ; si b est False, ça affiche "Affich" & "er les détails".
note que IIf() est l'équivalent VBA du SI() ; il y a donc 3 parties entre les parenthèses : 1er argument = la condition ; 2ème argument = ce qu'on veut si le test est VRAI ; 3ème argument = ce qu'on veut si le test est FAUX.
IIf(b, "Masqu", "Affich") est une abréviation de : IIf(b=True, "Masqu", "Affich")
Option Explicit
Sub HideShowColumns()
With Columns("L:P")
.Hidden = Not .Hidden:
ActiveSheet.Shapes("Rectangle 1").TextFrame.Characters.Text = Array("Afficher ", "Masquer ")(Abs(Not .Hidden)) & "les détails"
End With
End Sub
dans ton post #3, tu m'as demandé une explication de ma macro ; je t'ai écrit une explication bien détaillée dans mon post #4 ; l'aurais-tu manquée ? 😭 tu peux cliquer sur le lien bleu pour aller sur mon post #4 ; pour ce que tu demandes dans ton post #6, c'est comme si on écrivait :
Columns("L:P").Hidden = Not Columns("L:P").Hidden
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD