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+

Rechercher des sujets similaires à "macro dynamique"