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 subEdit : 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 SubCdlt,
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 !
Cdlt,