Je travaille actuellement sur fichier Excel, qui comporte des données exprimées en euros et en $. Certains destinataires du fichier ont besoin de visualiser les données en euros et d'autres souhaitent les visualiser en $. C'est pourquoi je souhaiterais faire une macro qui, au moyen d'un bouton, permette en un seul clic de basculer d'un affichage en euros à une affichage en $ (et vice versa) en masquant à chaque fois les colonnes de la devise qui n'est pas nécessaire.
Par exemple, on aurait par défaut à l'ouverture du fichier les colonnes en euros - E et F dans le fichier joint -, les colonnes en $ - C et D - étant masquées. En cliquant sur le bouton, les colonnes euros deviendraient masquées et les colonnes $ apparaitraient. Un nouveau clic ramenerait à la situation initiale.
Pourriez-vous me donner un coup de main là-dessus, je suis un grand débutant en macros!
Private Sub ToggleButton1_Click()
Dim DOLL$, EUR$
DOLL = "C:D": EUR = "E:F"
If ToggleButton1.Value Then
Columns(DOLL).Hidden = True
Columns(EUR).Hidden = False
End If
If Not ToggleButton1.Value Then
Columns(EUR).Hidden = True
Columns(DOLL).Hidden = False
End If
End Sub
PS: C'est le 10ème contrôle sur la BO -> Bouton Bascule
Private Sub ToggleButton1_Click()
Dim DOLL$, EUR$
DOLL = "C:D": EUR = "E:F"
If ToggleButton1.Value Then
Columns(DOLL).Hidden = True
Columns(EUR).Hidden = False
End If
If Not ToggleButton1.Value Then
Columns(EUR).Hidden = True
Columns(DOLL).Hidden = False
End If
End Sub
PS: C'est le 10ème contrôle sur la BO -> Bouton Bascule
Super, merci Staple, tu m’as mis sur la bonne voie ! J’ai juste une petite difficulté supplémentaire : contrairement au fichier simplifié joint, les colonnes qui doivent être masquées en même temps ne se suivent pas toutes (c’est notamment pour ça que je ne pouvais pas utiliser le mode plan (cf.remarque de Dugenou)).
Du coup, je n’ai pas réussi à définir les variables DOLL et EUR avec des ensemble de colonnes qui ne se suivent pas (par exemple DOLL = "C,G,M" ne marche pas). J’ai contourné la difficulté en supprimant les variables et en faisant autant de lignes de programmation qu’il y a de colonnes à masquer mais je me retrouve avec 50 lignes… je pense qu’il y a plus simple, non ?
Merci
Si... tu veux garder le bouton bascule, tu peux essayer par exemple :
Code:
Private Sub ToggleButton1_Click()
Range("C:D, G:L").Select
Selection.Columns.Hidden = ToggleButton1
Range("E:F,N:P").Select
Selection.Columns.Hidden = Not ToggleButton1
End Sub
Si... tu veux garder le bouton bascule, tu peux essayer par exemple :
Code:
Private Sub ToggleButton1_Click()
Range("C:D, G:L").Select
Selection.Columns.Hidden = ToggleButton1
Range("E:F,N:P").Select
Selection.Columns.Hidden = Not ToggleButton1
End Sub
Merci pour cette proposition, mais quand j'essaye ça il me masque des plages de colonnes beaucoup plus larges que ce qui est défini dans Range(...).
A defaut sinon je vais rester sur la solution dérivée de celle de Staple, qui fonctionne bien mais qui me prend bcpde lignes:
Private Sub ToggleButton1_Click()
If ToggleButton1.Value Then
Columns("O:O").Hidden = False
Columns("Q:Q").Hidden = False
Columns("S:S").Hidden = False
etc. (bcp de lignes!)
Columns("P").Hidden = True
Columns("R:R").Hidden = True
Columns("T:T").Hidden = True
etc. (bcp de lignes!)
End If
If Not ToggleButton1.Value Then
Columns("P").Hidden = False
Columns("R:R").Hidden = False
Columns("T:T").Hidden = False
etc. (bcp de lignes!)
Columns("O:O").Hidden = True
Columns("Q:Q").Hidden = True
Columns("S:S").Hidden = True
etc. (bcp de lignes!)
Private Sub ToggleButton1_Click()
Range("O1,Q1,S1").Select
Selection.Columns.Hidden = Not ToggleButton1
Range("P1,R1, T1").Select
Selection.Columns.Hidden = ToggleButton1
End Sub
Private Sub ToggleButton1_Click()
Range("O1,Q1,S1").Select
Selection.Columns.Hidden = Not ToggleButton1
Range("P1,R1, T1").Select
Selection.Columns.Hidden = ToggleButton1
End Sub