Masquer/Afficher certaines colonnes selon la valeur d'une ce

Bonjour à tous,

Pour un onglet nommé "Base" je souhaiterais que si dans la cellule de référence apparaît "€" ou "EUR" les colonnes D, I et N se masquent. Et inversement quand cette cellule contient autre chose que "€" ou "EUR" les colonnes masquées s'affichent à nouveau.

  • $B$4 est la cellule où s'affiche € ou EUR
  • Le code de recherche qui donne sa valeur à la cellule est :=RECHERCHEV(A2;Devises!A2:D165;B1;FAUX)
  • A:O l'ensemble des différentes colonnes.

voici le code que j'ai essayer de mettre en place où est l'erreur ? l'utilisation de "case" n'est-elle pas nécessaire ici ? :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim IsoSymbole As String

If Not Intersect(Target, Range("B1")) Is Nothing Then

IsoSymbole = Range("B1").Value

Range("A:O").EntireColumn.Hidden = False

Select Case IsoSymbole

Case "€", "EUR"

Range("A:C,E:H,J:M,O:O").EntireColumn.Hidden = False

Range("D:D,I:I,N:N").EntireColumn.Hidden = True

End Select

End If

End Sub

Merci d'avance de vos réponses.

Sylvain

Bonjour

Pour un onglet nommé "Base" je souhaiterais que si dans la cellule de référence apparaît "€" ou "EUR" les colonnes D, I et N se masquent. Et inversement quand cette cellule contient autre chose que "€" ou "EUR" les colonnes masquées s'affichent à nouveau.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
 If Target.NumberFormat = "#,##0.00 $" Or Target.NumberFormat = "#,##0.00 [$EUR]" Then Range("D:D,I:I,N:N").EntireColumn.Hidden = True
 If Target.NumberFormat <> "#,##0.00 $" And Target.NumberFormat <> "#,##0.00 [$EUR]" Then Cells.EntireColumn.Hidden = False
End If
End Sub

Cordialement

Bonsoir

Avant tout merci de la réponse.

la valeur de la cellule est purement apha soit c'est le symbole "€" soit c"est sa norme ISO "EUR".

donc si je comprends le code ce serais :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("B1")) Is Nothing Then

If Target.value = "€" Or Target.value = "[$EUR]" Then Range("D:D,I:I,N:N").EntireColumn.Hidden = True

If Target.value <> "€" And Target.value <> "[$EUR]" Then Cells.EntireColumn.Hidden = False

End If

End Sub

non ?

Cordialement

Sylvain

Bonjour

Dans ta proposition

If Target.value = "€" Or Target.value = "[$EUR]" Then Range("D:D,I:I,N:N").EntireColumn.Hidden = True
If Target.value <> "€" And Target.value <> "[$EUR]" Then Cells.EntireColumn.Hidden = False

Pourquoi mettre "[$EUR]" alors que ton sujet indiquait "EUR" ?

Autrement, c'est bon

Cordialement

Bonjour Amadéus

Merci de ton aide précieuse.

Oui effectivement j'ai corrigé pour EUR.

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("B2")) Is Nothing Then

If Target.Value = "€" Or Target.Value = "EUR" Then Range("D:D,I:I,N:N").EntireColumn.Hidden = True

If Target.Value <> "€" And Target.Value <> "EUR" Then Cells.EntireColumn.Hidden = False

End If

End Sub

Cela fonctionne en ce qui concerne le masquage des colonnes, par contre pour les afficher de nouveau cela pose problème,

suite à ça j"ai essayé avec :

If Target.Value <> "€" And Target.Value <> "EUR" Then Range("D:D,I:I,N:N").EntireColumn.Hidden = False

et avec

If Target.Value <> "€" And Target.Value <> "EUR" Then Range("A:A,O:O").EntireColumn.Hidden = False

où est l'erreur ?

Cordialement,

Sylvain

Bonjour

J'ai testé

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2")) Is Nothing Then
If Target.Value = "€" Or Target.Value = "EUR" Then Range("D:D,I:I,N:N").EntireColumn.Hidden = True
If Target.Value <> "€" And Target.Value <> "EUR" Then Cells.EntireColumn.Hidden = False
End If
End Sub

Sans rencontrer aucun problème.

Cordialement

Bonsoir Amadeus,

Je joint le fichier car je ne comprends pas avec moi cela ne fonctionne pas.

En changeant le pays la monnaie change aussi et quand le pays a pour monnaie l'euro là les colonnes du code doivent se masquer.

Peut être trouverez vous ce qui cloche.

Merci encore.

Cordialement,

Sylvain

Bonjour Amadéus

J'ai fais un test avec une feuille vierge, effectivement cela fonctionne, la seule différence avec le fichier que j'ai mis ici, c'est que dans la cellule B2 j'ai une formule de rechercheV pour avoir le résultat et afficher la monnaie du pays sélectionne en B1.

Le problème ne viendrait-il pas de là ?

Cordialement,

Sylvain

Bonjour

D'où l'intérêt de joindre un fichier pour éviter les suppositions, les fausses pistes, les tatonnements qui font perdre du temps!

Merci pour la prochaine...

Revenons au sujet.

B2 contient une formule. La cellule où s'effectue le vrai changement validé est la liste déroulante en A2. Il suffit de mettre le Target sur cette cellule. On obtient:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
If Target.Offset(0, 1).Value = "€" Or Target.Offset(0, 1).Value = "EUR" Then Range("D:D,I:I,N:N").EntireColumn.Hidden = True
If Target.Offset(0, 1).Value <> "€" And Target.Offset(0, 1).Value <> "EUR" Then Cells.EntireColumn.Hidden = False
End If
End Sub

Cordialement

Bonjour Amadéus,

Oui j'ai tout compris clair et limpide.

Et ça fonctionne, merci encore pour ton aide précieuse.

Cordialement,

Sylvain

Rechercher des sujets similaires à "masquer afficher certaines colonnes valeur"