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
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
A voir également:
- Google sheet masquer colonne sous condition
- Google maps satellite - Guide
- Dns google - Guide
- Google earth - Télécharger - 3D
- Déplacer une colonne excel - Guide
- Créer un compte google - Guide
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
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 :
Ensuite, il suffiet juste e teste la valeur en C17 avec un SI (IF en vba) comme ceci :
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 :
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é...
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é...
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
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
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
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
Modifié par benol3 le 20/02/2015 à 15:55
Re,
A mettre dans le code de la feuille "Fiche technique"
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Modification de ta Macro
A+
Maurice
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
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
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.
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.
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
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.
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.