Faire apparaître de colonnes cachées en fonction de 2 valeurs

Bonjour à tous

je suis utilisateur d'excel et je me débrouille mais je ne m'y connais pas assez pour résoudre certains de mes problèmes (aussi bien en excel qu'en VBA)

Voila mon problème:

dans un fichier j'ai caché des colonnes qui ne me seront utiles que dans certain cas.

si la casse "H11" contient Oui alors les colonnes doivent apparaîtrent mais seulement le nombre de colonne défini par dans la case H15 (valeur de H15 -1).

Les colonnes a faire apparaîtrent sont celles de "O à Y"

quelqu'un a-t-il une solution sans passer par VBA?

sinon avec VBA

Par avance merci

Bonjour,

Sans VBA, c'est impossible...

Voici un essai avec ce code à placer dans le module de la feuille en question. Remarque : l'actualisation ne se fait qu'en fonction de H11. Si on change la valeur de H15 quand H11 est sur Oui, il ne se passera rien...

private sub worksheet_change(byval target as range)
set r = intersect(target, range("H11"))
if not r is nothing then
    if r.value = "Oui" then
        nbcol = range("H15").value - 1
        if nbcol > 0 and nbcol < 12 then
            columns(15).resize(, nbcol).hidden = false
        end if
    else
        range("O:Y").entirecolumn.hidden = true
    end if
end if
end sub

Edit : pour que l'affichage fonctionne en fonction des 2 cellules :

Private Sub worksheet_change(ByVal target As Range)
Set r = Intersect(target, Range("H11"))
Set r2 = Intersect(target, Range("H15"))
If Not r Is Nothing Or Not r2 Is Nothing Then
    MasquerAfficher Range("H11").Value, Range("H15").Value
End If
End Sub

Sub MasquerAfficher(Afficher$, nbcol&)

If Afficher = "Oui" Then
    If nbcol > 0 Then
        Columns(15).Resize(, nbcol).Hidden = False
    End If
Else
    Range("O:Y").EntireColumn.Hidden = True
End If

End Sub

Cdlt,

bonjour,

merci pour l'aide.

mais comme je l'ai dit dans le premier message, je n(y connait rien dans VBA et je ne sais pas comment mettre en oeuvre cette macro.

j'arrive à ouvrir VBA et à copier le code (rien de trés compliqué en somme) mais après c'est le très grand flou.

merci pour votre aide

Bonjour,

Voici un classeur exemple avec la seconde proposition qui, d'ailleurs, est à parfaire.

Le code worksheet_change est ce qu'on appelle une procédure évènementielle et doit être collée dans le module de la feuille qui subira les changements.

Il n'y a pas besoin de l'exécuter car chaque changement (par saisie) sur une des cellules H11 ou H15 déclenchera le code. Son exécution est donc conditionnée par l'évènement (changement de valeur sur la feuille de travail) dont elle porte le nom. Ce code exécute la seconde macro qui devrait être placée dans un module standard. Cette seconde macro dépend de paramètres (définie par la macro change) et ne peut pas s'exécuter seule.

Il est vrai que ce ne sont pas les cas les plus courants, désolé...

N'hésitez pas si vous avez des questions !

4classeur1.xlsm (15.08 Ko)

Cdlt,

Rechercher des sujets similaires à "apparaitre colonnes cachees fonction valeurs"