Macros pour masquer des colonnes selon critère

Résolu/Fermé
Dddiaz - 20 févr. 2015 à 14:34
Dddiaz Messages postés 33 Date d'inscription mercredi 28 janvier 2015 Statut Membre Dernière intervention 20 février 2016 - 20 févr. 2015 à 22:57
Bonjour,

Je voudrais masquer plusieurs colonnes dans une feuille selon critères d'une autre feuille du même classeur.
Bonjour,

J'ai fait un fichier "Devis" pour mon épouse qui est couturière.
Ce fichier comporte plusieurs onglets. "Fiche Technique" Et "Devis"
Maintenant je voudrais si c17 de fiche technique comporte "Store" que les colonnes H et I soit masquer dans la feuille "Devis".
La même chose lorsqu'il est marquer "Rideaux" toujours en c17 de la fiche technique mais que les colonnes G et I soit masquer de la feuille "Devis"
Et enfin toujours C17 "Overgordijn" mais cette fois les colonnes G et H soit masquer.

Chaque macro commandés par un bouton respectivement "Store" "Rideaux" "Overgordijn".

PS: je commence tout doucement an VBA mais ça c'est encore un peu trop difficile pour moi.

En vous remerciant de votre aide.
A voir également:

7 réponses

benol3 Messages postés 569 Date d'inscription lundi 29 juillet 2013 Statut Membre Dernière intervention 7 mai 2015 87
20 févr. 2015 à 14:51
Salut,

Tu peux te servir de l'enregistreur de macro pour apprendre le VBA...

Voici comment masquer/afficher des colonnes :
Column("H:J").hide 'Masque les colonnes de H à J
Column("H:J").show 'Affiche les colonnes de H à J 


Ensuite, il suffiet juste e teste la valeur en C17 avec un SI (IF en vba) comme ceci :
 IF range("C17").value="Devis" THEN
'On masque les colonnes
End if


Fais attention, si C17 et les colonnes à masquer sont dans des feuilles dfférentes, il faut preciser le nom de la feuille devant le nom de ta colonne/cellule

Exemple :
sheets("feuil1").range("C17")
Sheets("Devis").column("H:J")


Pourquoi utiliser un bouton pour chaque cas ? Faire un programme qui se déclenche à chaque modifcation de C17 traitant tous les cas , serait plus approprié...
0
Dddiaz Messages postés 33 Date d'inscription mercredi 28 janvier 2015 Statut Membre Dernière intervention 20 février 2016 1
20 févr. 2015 à 15:09
Bonjour Benol 3

En effet serait plus approprier de faire une macro qui se déclenche automatiquement.
L'enregistreur de macro, j'ai déjà utiliser pour des truc simple, mais pour faire ça je ne sais pas trop comment m'y prendre.
feuille "Fiche technique" en C17: soit
1° "Store" alors les colonnes H et I doivent disparaître dans le feuille "Devis"
2° "Rideaux" alors les colonnes G et I doivent disparaître dans la feuille "Devis"
3° "Overgordijn" alors les colonnes G et H doivent disparaître dans la feuille "Devis"

D'avance merci de votre temps
0
benol3 Messages postés 569 Date d'inscription lundi 29 juillet 2013 Statut Membre Dernière intervention 7 mai 2015 87
Modifié par benol3 le 20/02/2015 à 15:55
Re,

A mettre dans le code de la feuille "Fiche technique"

Sub Worksheet_Change(ByVal Target As Range)

If Target.Address="$C$17" Then 'Après chaque modification de la cellule C17

'Affiche toutes les colonnes déjà masquées dans la feuille Devis
sheets("Devis").column("G:J").show

'Masque les colonnes en fonction de la valeur de C17       
SELECT case range("C17").value
       Case "Devis" : sheets("Devis").column("H:J").hide
       Case "Rideaux" : sheets("Devis").column("G:I").hide
       Case "Overgordijn" : sheets("Devis").column("G:H").hide
END SELECT

End If
End Sub


Il se peut qu'il y ai des erreurs dans le code, je ne l'ai pas testé... Redonne moi le message d'erreur et la ligne de code qui pose problème...

N'hésite pas à me poser des questions si tu ne comprends pas le code
0
Dddiaz Messages postés 33 Date d'inscription mercredi 28 janvier 2015 Statut Membre Dernière intervention 20 février 2016 1
20 févr. 2015 à 22:00
Bonsoir,

J'ai effectivement un message d'erreur.
Erreur d'exécution(9)
L'indice n'appartient pas a la sélection.

Voici le lien de mon fichier.

https://www.cjoint.com/c/EBuwjR3l2tb

Je comprend assez bien le code, j'ai juste mis les noms des onglet correcte. malgré ça j'ai encore le code d'erreur.

Bien à toi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour

Modification de ta Macro
Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address = "$C$17" Then 'Après chaque modification de la cellule C17
   'Affiche toutes les colonnes déjà masquées dans la feuille Cible
      With Sheets(Feuil3.Name)
          .Cells.EntireColumn.Hidden = False
      'Masque les colonnes en fonction de la valeur de C17
         Select Case Range("C17").Value
            Case "Store"
               .Columns("H:J").EntireColumn.Hidden = True
            Case "Rideaux"
               .Columns("G:I").EntireColumn.Hidden = True
            Case "Overgordijn"
               .Columns("G:H").EntireColumn.Hidden = True
         End Select
         .Range("A1").Select
      End With
   End If
End Sub

A+
Maurice
0
Dddiaz Messages postés 33 Date d'inscription mercredi 28 janvier 2015 Statut Membre Dernière intervention 20 février 2016 1
20 févr. 2015 à 22:47
Bonsoir,

Cela commence a fonctionner sauf que pour "Rideaux" il me masque les colonnes de (G) a (I) alors que la colonne (H) devrais rester visible.

Pas grand chose, je suppose, a modifier.
0
Dddiaz Messages postés 33 Date d'inscription mercredi 28 janvier 2015 Statut Membre Dernière intervention 20 février 2016 1
20 févr. 2015 à 22:57
Re,

j'ai trouver pour sectionner 2 colonnes non adjacente il faut remplacer Columns ("G:I") Par Range ("G:G, I:I"). un bon début non :).

Encore merci a vous deux Benol3 et Maurice.

Bien à vous.
0