Macro dynamique
Bonjour à tous,
J'ai actuellement créé une liste déroulante avec des chantiers par colonne, mais but et de pouvoir les afficher/cacher en fonction du choix de la liste déroulante jusque là ça va.
Mais maintenant j'aimerai que mon code Vba change automatique en fonction du nom du chantier que je désire mettre dans la colonne et la je bloque, des que je change de nom et qu'il ne correspond pas au nom de la colonne cela ne fonction plus. J'ai essayé en indiquant le nom de la colonne que j'ai inscrit dans "range" ainsi que le n° de colonne et ligne, mais cela ne fonction pas .
Mon code: en rouge c'est pour autre chose ne pas en tenir compte.
J'ai juste fait un essai sur 3 colonnes, par la suite il en aura 30
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Application.Intersect(Target, Range("a2:t2")) Is Nothing Then
Call filtrage
End If
If Not Application.Intersect(Target, Range("G7")) Is Nothing Then 'Sur modification cellule g7
If LCase(Range("G7").Value) = Range("chantier 5") Then 'Si sa valeur est égale à "masquer", alors
Range("K:L").EntireColumn.Hidden = False 'J'affiche
Else 'Sinon
Range("K:L").EntireColumn.Hidden = True 'je masque
End If
End If
If Not Application.Intersect(Target, Range("G7")) Is Nothing Then 'Sur modification cellule g7
If LCase(Range("G7").Value) = "chantier 4" Then 'Si sa valeur est égale à "masquer", alors
Range("I:J").EntireColumn.Hidden = False 'J affiche
Else 'Sinon
Range("I:J").EntireColumn.Hidden = True 'Je masque
End If
End If
If Not Application.Intersect(Target, Range("G7")) Is Nothing Then 'Sur modification cellule g7
If LCase(Range("G7").Value) = "chantier 6" Then 'Si sa valeur est égale à "masquer", alors
Range("M:N").EntireColumn.Hidden = False 'J affiche
Else 'Sinon
Range("M:N").EntireColumn.Hidden = True 'Je masque
End If
End If
End Sub
Pour être plus clair j'aimerai que dans le code vba la partie "chantier 4" change de nom en fonction du nom que je mets dans les colonnes 20 car ceux-ci vont changer souvent
Merci à ceux qui pourront m'aider
A+
Bonjour et bienvenue sur le forum
Un essai à tester, si j'ai bien compris.
Bye !
Salut,
Merci pour la réponse, mais cela ne fonctionne toujours pas.
Le fait que la liste déroulante ce mette à jour des que je change de nom de chantier cela étai déjà bon.
Maintenant si tu regardes des que tu changes de nom de chantier la fonction masquer/affiche de la liste déroulant ne fonctionne plus. ( mon problème de base) j'ai peut être pas été très clair dsl.
If LCase(Range("G7").Value) = "chantier 4" Then 'Si sa valeur est égale à "masquer", alors
Range("I:J").EntireColumn.Hidden = False 'J'affiche
ElseIf LCase(Range("G7").Value) = "chantier 5" Then 'Sinon
Range("K:L").EntireColumn.Hidden = False
ElseIf LCase(Range("G7").Value) = "chantier 6" Then 'Sinon
Range("M:N").EntireColumn.Hidden = False
End If
'je masque
'End If
End If
Ce problème vient du faîte que par exemple le nom"chantier 4" ne se mette pas a jours en fonction du nom que l'on modifier dans les colonnes chantier, donc il est normal que cela ne fonctionne pas comme il renvoie une référence fausse. J'aimerais donc que ce "chantier 4" ou autre nom en rouge ce mette a jours en fonction ce que l'ont tape dans les colonnes 20.
A+