Macro VBA sur Excel, need help...
Résolu/Fermé
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
-
24 juin 2009 à 21:11
morigann Messages postés 64 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 10 mai 2011 - 26 juin 2009 à 14:49
morigann Messages postés 64 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 10 mai 2011 - 26 juin 2009 à 14:49
A voir également:
- Macro VBA sur Excel, need help...
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Calculer une moyenne sur excel - Guide
- Si et excel - Guide
- Comment aller à la ligne sur excel - Guide
21 réponses
yg_be
Messages postés
23392
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 décembre 2024
Ambassadeur
1 556
24 juin 2009 à 21:21
24 juin 2009 à 21:21
Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="Agriculture"
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="Agriculture"
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
25 juin 2009 à 08:37
25 juin 2009 à 08:37
Ok merci, donc je dois faire ça pour chacun des 32 domaines?
Pourrais tu m'indiquer comment faire en sorte que le programme ferme la fenêtre si l'utilisateur répond non (cf. plus haut)?
Pourrais tu m'indiquer comment faire en sorte que le programme ferme la fenêtre si l'utilisateur répond non (cf. plus haut)?
yg_be
Messages postés
23392
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 décembre 2024
Ambassadeur
1 556
25 juin 2009 à 10:18
25 juin 2009 à 10:18
J'ai l'impression que tu n'as jamais programmé. Je me trompe ?
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
25 juin 2009 à 10:19
25 juin 2009 à 10:19
Sinon tu utilise la fonction filtrer de Excel qui est pas mal pour ce que tu veux faire ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
25 juin 2009 à 11:33
25 juin 2009 à 11:33
En fait tu ne te trompes qu'à moitié yg_be parce que j'ai seulement suivi quelques cours de programmation pour des macros basiques.. désolé, si tu ne veux pas perdre ton temps à m'expliquer, laisse tomber
yg_be
Messages postés
23392
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 décembre 2024
Ambassadeur
1 556
25 juin 2009 à 11:59
25 juin 2009 à 11:59
essaie ainsi :
option explicit
Sub Tri_domaines
Dim Domaine As String
dim queldomaine as string
Domaine = InputBox (« Souhaitez-vous voir un domaine précis s’afficher ? »)
If Domaine = « Non »
Then
(fermeture de la fenêtre)
else
queldomaine = InputBox (« Entrez le nom du domaine que vous souhaitez voir s’afficher »)
Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=queldomaine
End If
End Sub
option explicit
Sub Tri_domaines
Dim Domaine As String
dim queldomaine as string
Domaine = InputBox (« Souhaitez-vous voir un domaine précis s’afficher ? »)
If Domaine = « Non »
Then
(fermeture de la fenêtre)
else
queldomaine = InputBox (« Entrez le nom du domaine que vous souhaitez voir s’afficher »)
Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=queldomaine
End If
End Sub
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
25 juin 2009 à 14:05
25 juin 2009 à 14:05
Merci de ta réponse; j'ai recopié le code et il y a un problème de syntaxe; au niveau du "Then" "erreur de compilation, attendu : numéro de ligne ou étiquette ou instruction ou fin d'instruction" s'affiche.
yg_be
Messages postés
23392
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 décembre 2024
Ambassadeur
1 556
25 juin 2009 à 14:40
25 juin 2009 à 14:40
option explicit
Sub Tri_domaines
Dim Domaine As String
dim queldomaine as string
Domaine = InputBox (« Souhaitez-vous voir un domaine précis s’afficher ? »)
If Domaine = « Non » Then
' (fermeture de la fenêtre)
else
queldomaine = InputBox (« Entrez le nom du domaine que vous souhaitez voir s’afficher »)
Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=queldomaine
End If
End Sub
Sub Tri_domaines
Dim Domaine As String
dim queldomaine as string
Domaine = InputBox (« Souhaitez-vous voir un domaine précis s’afficher ? »)
If Domaine = « Non » Then
' (fermeture de la fenêtre)
else
queldomaine = InputBox (« Entrez le nom du domaine que vous souhaitez voir s’afficher »)
Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=queldomaine
End If
End Sub
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
25 juin 2009 à 14:50
25 juin 2009 à 14:50
Ok, maintenant ' (fermeture de la fenêtre)
s'affiche en vert, mais :
Domaine = InputBox (« Souhaitez-vous voir un domaine précis s’afficher ? »)
If Domaine = « Non » Then
et
queldomaine = InputBox (« Entrez le nom du domaine que vous souhaitez voir s’afficher »)
s'affichent en rouge ("erreur de syntaxe")
s'affiche en vert, mais :
Domaine = InputBox (« Souhaitez-vous voir un domaine précis s’afficher ? »)
If Domaine = « Non » Then
et
queldomaine = InputBox (« Entrez le nom du domaine que vous souhaitez voir s’afficher »)
s'affichent en rouge ("erreur de syntaxe")
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
25 juin 2009 à 14:53
25 juin 2009 à 14:53
Non en fait c'est bon ça marche, c'était à cause des guillemets!
Merci!!!
Merci!!!
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
25 juin 2009 à 15:00
25 juin 2009 à 15:00
Bon en fait le programme ne fonctionne pas jusqu'au bout, mais je pense savoir pourquoi :
mon tableau Excel est en fait un glossaire, la colonne domaine se situe colonne E ligne 5, il faut sans doute que le programme cherche uniquement dans cette colonne, mais là encore je ne sais pas..........
mon tableau Excel est en fait un glossaire, la colonne domaine se situe colonne E ligne 5, il faut sans doute que le programme cherche uniquement dans cette colonne, mais là encore je ne sais pas..........
yg_be
Messages postés
23392
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 décembre 2024
Ambassadeur
1 556
25 juin 2009 à 17:02
25 juin 2009 à 17:02
Change le 1 en 5 dans la ligne suivante, c'est le numéro de la colonne à filtrer.
Selection.AutoFilter Field:=1, Criteria1:=queldomaine
Selection.AutoFilter Field:=1, Criteria1:=queldomaine
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
26 juin 2009 à 10:01
26 juin 2009 à 10:01
ça a marché, cool merci.
J'aimerais aussi que mon programme s'affiche directement à l'ouverture d'Excel (l'utilisateur doit pouvoir choisir s'il veut que tous les domaines s'affichent --> "non" ou s'il veut consulter un domaine particulier --> "oui")
Pour cela j'ai mis : Sub auto_open() comme titre
Dim Domaine As String
Dim queldomaine As String
Domaine = InputBox("Souhaitez-vous voir un domaine précis s’afficher ?")
If Domaine = "Oui" Then
queldomaine = InputBox("Entrez le nom du domaine que vous souhaitez voir s’afficher")
Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:=queldomaine
ElseIf Domaine = "oui" Then
queldomaine = InputBox("Entrez le nom du domaine que vous souhaitez voir s’afficher")
Cells.Select
Selection.AutoFilter
Range("E4").Select
Selection.AutoFilter Field:=5, Criteria1:=queldomaine
Else
Range("E4").Select
Selection.AutoFilter Field:=5
End If
End Sub
Mais ça ne marche pas, je rouvre mon classeur et rien ne s'affiche.
J'aimerais aussi que mon programme s'affiche directement à l'ouverture d'Excel (l'utilisateur doit pouvoir choisir s'il veut que tous les domaines s'affichent --> "non" ou s'il veut consulter un domaine particulier --> "oui")
Pour cela j'ai mis : Sub auto_open() comme titre
Dim Domaine As String
Dim queldomaine As String
Domaine = InputBox("Souhaitez-vous voir un domaine précis s’afficher ?")
If Domaine = "Oui" Then
queldomaine = InputBox("Entrez le nom du domaine que vous souhaitez voir s’afficher")
Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:=queldomaine
ElseIf Domaine = "oui" Then
queldomaine = InputBox("Entrez le nom du domaine que vous souhaitez voir s’afficher")
Cells.Select
Selection.AutoFilter
Range("E4").Select
Selection.AutoFilter Field:=5, Criteria1:=queldomaine
Else
Range("E4").Select
Selection.AutoFilter Field:=5
End If
End Sub
Mais ça ne marche pas, je rouvre mon classeur et rien ne s'affiche.
yg_be
Messages postés
23392
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 décembre 2024
Ambassadeur
1 556
26 juin 2009 à 11:23
26 juin 2009 à 11:23
Où se trouve la sub auto_open ?
Je pense qu'elle doit se trouver dans un module, pas dans le code associé à un sheet ou au workbook ou à une forme...
Je pense qu'elle doit se trouver dans un module, pas dans le code associé à un sheet ou au workbook ou à une forme...
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
26 juin 2009 à 11:47
26 juin 2009 à 11:47
Elle n'est pas dans un module (il n'y en a qu'un, vide) ni dans le workbook ni dans une autre feuille.
Mais ça ne peut pas fonctionner si je la rajoute dans le workbook?
Mais ça ne peut pas fonctionner si je la rajoute dans le workbook?
yg_be
Messages postés
23392
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 décembre 2024
Ambassadeur
1 556
26 juin 2009 à 13:15
26 juin 2009 à 13:15
Pourquoi ne pas simplement déplacer la routine dans le module vide ?
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
26 juin 2009 à 13:38
26 juin 2009 à 13:38
Bonjour,
Dans un module (module1 par exemple), copie colle ton code. Tu peux garder Sub auto_open() si tu veux.
Dans le module ThisWorkbook, choisir "Workbook" dans la liste déroulante (Général) à gauche de la liste (déclaration). Tu vas avoir ceci :
Colle ça dans la procédure : Module1.auto_open
tu dois avoir ça :
Sauvegarde ton fichier et relance le.
;o)
Dans un module (module1 par exemple), copie colle ton code. Tu peux garder Sub auto_open() si tu veux.
Dans le module ThisWorkbook, choisir "Workbook" dans la liste déroulante (Général) à gauche de la liste (déclaration). Tu vas avoir ceci :
Private Sub Workbook_Open() End Sub
Colle ça dans la procédure : Module1.auto_open
tu dois avoir ça :
Private Sub Workbook_Open() Module1.auto_open End Sub
Sauvegarde ton fichier et relance le.
;o)
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
26 juin 2009 à 13:42
26 juin 2009 à 13:42
Ok je vais essayer, merci!
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
26 juin 2009 à 14:09
26 juin 2009 à 14:09
J'ai suivi tes indications Polux31 mais à l'exécution de
Private Sub Workbook_Open()
Module1.auto_open
End Sub
.auto_open est surligné et un message d'erreur s'affiche : "Erreur de compilation : Membre de méthode ou de données introuvable"
Private Sub Workbook_Open()
Module1.auto_open
End Sub
.auto_open est surligné et un message d'erreur s'affiche : "Erreur de compilation : Membre de méthode ou de données introuvable"
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
26 juin 2009 à 14:25
26 juin 2009 à 14:25
Private Sub Workbook_Open()
Form1.Show
End Sub
Fais comme ca!
en mettant le nom de la userform que tu veux appeler a l'ouverture ;)
Form1.Show
End Sub
Fais comme ca!
en mettant le nom de la userform que tu veux appeler a l'ouverture ;)