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 !
Sub AfficherMasquerColonnes()
Dim i As Integer, Decalage As Integer
Dim Sh As Shape
With ActiveSheet
.Unprotect Password:="" 'mot de passe à placer entre ces guillemets
Set Sh = .Shapes(Application.Caller)
If Sh.TopLeftCell.Column > 1 Then Decalage = 7
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = True And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = True Then i = 1
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = False And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = True Then i = 2
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = True And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = False Then i = 3
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = False And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = False Then i = 4
Select Case i
Case 1
.Range(.Columns(2 + Decalage), .Columns(3 + Decalage)).Hidden = True
.Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = False
Case 2
.Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = True
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = False
Case 3
.Range(.Columns(2 + Decalage), .Columns(7 + Decalage)).Hidden = False
Case 4
.Range(.Columns(4 + Decalage), .Columns(7 + Decalage)).Hidden = True
End Select
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True, Password:="" 'mot de passe à placer entre ces guillemets
End With
End Sub
Bonjour Staple1600,
Je le met cet 'ajout" ce bout de code stp?
Tu me connais...on risque faire des "aller retour pour rien!!!
Merci d'avance
Cordialement à toi
Pour t'en convaincre je te copie l'intégralité de ton code avec l'ajout fait là ou j'avais indiqué qu'il fallait le faire
(décidément il y a beaucoup de problème de lunette aujourd’hui...🙄)
Code:
Sub AfficherMasquerColonnes()
Dim i As Integer, Decalage As Integer
Dim Sh As Shape
With ActiveSheet
.Unprotect Password:="" 'mot de passe à placer entre ces guillemets
Set Sh = .Shapes(Application.Caller)
If Sh.TopLeftCell.Column > 1 Then Decalage = 7
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = True And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = True Then i = 1
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = False And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = True Then i = 2
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = True And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = False Then i = 3
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = False And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = False Then i = 4
Select Case i
Case 1
.Range(.Columns(2 + Decalage), .Columns(3 + Decalage)).Hidden = True
.Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = False
Case 2
.Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = True
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = False
Case 3
.Range(.Columns(2 + Decalage), .Columns(7 + Decalage)).Hidden = False
Case 4
.Range(.Columns(4 + Decalage), .Columns(7 + Decalage)).Hidden = True
End Select
Application.Goto .[A1], True
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True, Password:="" 'mot de passe à placer entre ces guillemets
End With
End Sub
Pour t'en convaincre je te copie l'intégralité de ton code avec l'ajout fait là ou j'avais indiqué qu'il fallait le faire
(décidément il y a beaucoup de problème de lunette aujourd’hui...🙄)
Code:
Sub AfficherMasquerColonnes()
Dim i As Integer, Decalage As Integer
Dim Sh As Shape
With ActiveSheet
.Unprotect Password:="" 'mot de passe à placer entre ces guillemets
Set Sh = .Shapes(Application.Caller)
If Sh.TopLeftCell.Column > 1 Then Decalage = 7
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = True And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = True Then i = 1
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = False And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = True Then i = 2
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = True And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = False Then i = 3
If .Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = False And _
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = False Then i = 4
Select Case i
Case 1
.Range(.Columns(2 + Decalage), .Columns(3 + Decalage)).Hidden = True
.Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = False
Case 2
.Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = True
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = False
Case 3
.Range(.Columns(2 + Decalage), .Columns(7 + Decalage)).Hidden = False
Case 4
.Range(.Columns(4 + Decalage), .Columns(7 + Decalage)).Hidden = True
End Select
Application.Goto .[A1], True
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True, Password:="" 'mot de passe à placer entre ces guillemets
End With
End Sub
Marche toujours pas!
Pas problème de lunette.
Lorsque je tape 100 dans cellule A4 puis enregistrement du fichier le curseur reste sur cellule A4!
Voilà
Merci Staple1600
Cordialement à toi
Cela marche chez moi parce que j'ai testé sur une fichier que j'ai du créé, faute de trouver un fichier exemple dans ta discussion.
Joins un fichier exemple, sur lequel je te testerai ma ligne de code et là on finira par être dans la certitude 😉
Donc au final, nous avons bien encore ici un problème de lunettes 😉
(Je dis encore parce que cela fait 4 fois que je fais ce copier/coller dans le fil de nouveaux membres du forum)
IMPORTANT :
- CHARTE DU FORUM : Lisez Lien supprimé avant votre première intervention.
- ILLUSTREZ VOTRE DEMANDE : Afin de faciliter la compréhension de votre demande il est conseillé de joindre un PETIT fichier qui illustre votre question précise et montre les résultats que vous cherchez à obtenir.
Pour l'envoyer, cliquez sur le trombone ci-dessous ou sur le bouton "Gérer les pièces jointes" dans la zone "Options supplémentaires".Ensuite, cliquez sur le bouton "Parcourir" et sélectionnez-le (après l'avoir compressé s'il dépasse les 250Ko).
- DONNEES CONFIDENTIELLES : Ne laissez AUCUNE donnée personnelle ou confidentielle (noms, adresses, N° de téléphone, entreprises...) dans vos pièces jointes. Vous mettriez Excel-Downloads en contravention avec la loi Informatique et Liberté et votre fichier devrait être enlevé.
Cela marche chez moi parce que j'ai testé sur une fichier que j'ai du créé, faute de trouver un fichier exemple dans ta discussion.
Joins un fichier exemple, sur lequel je te testerai ma ligne de code et là on finira par être dans la certitude 😉
Donc au final, nous avons bien encore ici un problème de lunettes 😉
(Je dis encore parce que cela fait 4 fois que je fais ce copier/coller dans le fil de nouveaux membres du forum)
Dans mon fichier je n'ai heureusement pas de cellules fusionnées
Dans le tien, si.
Donc avec ton fichier, cette version de ma ligne fonctionne (j'ai testé sur ton fichier)
Application.Goto .Cells(1, 1).Range("A1"), True
Finalement la première version aussi (je viens de retester)
D’où l'importance de la présence du fichier exemple 😉
Et en modifiant ainsi, cela fonctionne, non ?
NB: Le reste de la procédure restera inchangé, et tu supprimes la ligne précédemment ajouté après le End Select
Code VB: SelectCase i Case 1
.Range(.Columns(2 + Decalage), .Columns(3 + Decalage)).Hidden = True
.Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = False
Application.Goto .Range("A1"), True'ajout ici Case 2
.Range(.Columns(4 + Decalage), .Columns(5 + Decalage)).Hidden = True
.Range(.Columns(6 + Decalage), .Columns(7 + Decalage)).Hidden = False
Application.Goto .Range("A1"), True'ajout ici Case 3
.Range(.Columns(2 + Decalage), .Columns(7 + Decalage)).Hidden = False
Application.Goto .Range("A1"), True'ajout ici Case 4
.Range(.Columns(4 + Decalage), .Columns(7 + Decalage)).Hidden = True
Application.Goto .Range("A1"), True'ajout ici EndSelect
Si mon interprétation n'est pas bonne plutot que de dire ça ne marche pas , ce qui n'apporte rien , si tu n'arrives pas à le dire avec des mots fais une photo avant et aprés , colles tout cela dans un classeur et envois le nous , sinon , nous ne seront jamais à l'heure pour la prise de la Bastille (Ben oui , le 14 juillet , ça arrive vite)
Ok , comment enregistres tu ton fichier car dans le code, nul part je ne vois de commande d'enregistement,
si c'est simplement en cliquant sur enregistrer fichier ou sur la disquette , il faut mettre le code que te propose si gentillement Staple, qui fonctionne effectivement trés bien , ( Le code comme staple d'ailleur , lol) dans l'évenementiel avant enregistrement du classeur
Donc dans le module thisworkbook :
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With ActiveSheet
.Unprotect Password:=""
Application.Goto .[A1], True
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True, Password:=""
End With
End Sub
Et oui , quelques fois c'est à en perdre son VBA , ou le désire d'aider les autres .
Enfin ....
y'a quelques récompenses intellectuelles , et de superbes rencontres en compensation , le plus surprennant c'est en aidant que l'on découvre ses propres lacunes ,
et y'a encore du boulot pour moi , mais bon,
en étudiant les réponses des autres , l'on découvre plein de nouvelles techniques .
Bon , en fait l'interêt est d'essayer de s'améliorer dans le décodage des besoins des utilisateurs.
Si mon interprétation n'est pas bonne plutot que de dire ça ne marche pas , ce qui n'apporte rien , si tu n'arrives pas à le dire avec des mots fais une photo avant et aprés , colles tout cela dans un classeur et envois le nous , sinon , nous ne seront jamais à l'heure pour la prise de la Bastille (Ben oui , le 14 juillet , ça arrive vite)
Ok , comment enregistres tu ton fichier car dans le code, nul part je ne vois de commande d'enregistement,
si c'est simplement en cliquant sur enregistrer fichier ou sur la disquette , il faut mettre le code que te propose si gentillement Staple, qui fonctionne effectivement trés bien , ( Le code comme staple d'ailleur , lol) dans l'évenementiel avant enregistrement du classeur
Donc dans le module thisworkbook :
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With ActiveSheet
.Unprotect Password:=""
Application.Goto .[A1], True
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True, Password:=""
End With
End Sub
Bonjour camarchepas,
Eh! ben voilà ça marche NICKEL!
Je pense que la phrase suivante est de trop et c'est bien dommage"si tu n'arrives pas à le dire avec des mots fais une photo avant et après , colles tout cela dans un classeur et envois le nous , sinon , nous ne seront jamais à l'heure pour la prise de la Bastille (Ben oui , le 14 juillet , ça arrive vite)"
- 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