Aidez moi SVP problème en vba :- (
Résolu/Fermé
usdy
Messages postés
243
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
20 mai 2018
-
7 janv. 2009 à 10:01
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 - 7 janv. 2009 à 15:46
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 - 7 janv. 2009 à 15:46
A voir également:
- Aidez moi SVP problème en vba :- (
- Excel compter cellule couleur sans vba - Guide
- Mkdir vba ✓ - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
- L'indice n'appartient pas à la sélection vba ✓ - Forum Programmation
- Autofill vba ✓ - Forum Excel
7 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
7 janv. 2009 à 10:30
7 janv. 2009 à 10:30
Bonjour,
La numérotation des filtre commence à 1 à partir de la première colonne où il y à un filtre.
Exemple
Il y à un filtre automatique dans les colonnes D,E,F,G
pour valider le filtre colonne F c'est Selection.AutoFilter Field:=3, Criteria1:="Prod"
A+
La numérotation des filtre commence à 1 à partir de la première colonne où il y à un filtre.
Exemple
Il y à un filtre automatique dans les colonnes D,E,F,G
pour valider le filtre colonne F c'est Selection.AutoFilter Field:=3, Criteria1:="Prod"
A+
usdy
Messages postés
243
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
20 mai 2018
6
7 janv. 2009 à 10:40
7 janv. 2009 à 10:40
mon filtre commence à la lettre A et je souhaite la colonne O, c'est pour cette raison que j'ai fait un filtre à 15, mais le problème c'est que dans la colonne 15, il ne trouve pas le nom prod et donc le filtre ne retient aucune ligne, du coup je ne sais pas si je peux filtrer sur une valeur inexistante.
merci pour ton aide
merci pour ton aide
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
7 janv. 2009 à 11:04
7 janv. 2009 à 11:04
Attention à la case, le filtre y est sensible.
Et il est tout à fait normal que si tu met un critére qui n'existe pas il ne met aucune ligne, un peu de réflexion Svp.
A+
Et il est tout à fait normal que si tu met un critére qui n'existe pas il ne met aucune ligne, un peu de réflexion Svp.
A+
usdy
Messages postés
243
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
20 mai 2018
6
7 janv. 2009 à 11:06
7 janv. 2009 à 11:06
est ce que c'est nomal qu'en ne trouvant rien il bug ?
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
7 janv. 2009 à 11:17
7 janv. 2009 à 11:17
Oui, un autofilter se base sur des données qui se trouve dans sa liste de référence (le comboBox)
Pour éviter tu met
Juste au dessus de la ligne de l'autofilter.
et
Juste en dessous de la ligne de l'autofilter
Pour éviter tu met
On Error Resume Next
Juste au dessus de la ligne de l'autofilter.
et
If Err then exit sub
Juste en dessous de la ligne de l'autofilter
usdy
Messages postés
243
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
20 mai 2018
6
7 janv. 2009 à 11:23
7 janv. 2009 à 11:23
le problème est que je mets mon filtre dans une boucle for car "prod" est une variable qui prend une valeur différente à chaque tour de boucle, donc si je fais un exit sub quand le filtre est nul alors la boucle for n'ira pas jusqu'au bout.
Qu'en penses-tu ?
Qu'en penses-tu ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
7 janv. 2009 à 11:31
7 janv. 2009 à 11:31
Alors tu ne met pas le If Err
en dessous de Next tu met
On Error Goto 0
EDIT:
Mais je ne vois pas l'utilité d'une boucle sur le filtre, tu n'aurras pas le temps de les voir sauf le dernier ??
en dessous de Next tu met
On Error Goto 0
EDIT:
Mais je ne vois pas l'utilité d'une boucle sur le filtre, tu n'aurras pas le temps de les voir sauf le dernier ??
usdy
Messages postés
243
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
20 mai 2018
6
7 janv. 2009 à 11:38
7 janv. 2009 à 11:38
j'ai essayé de mettre :
On Error Resume Next
avant le filtre et :
On Error GoTo 0
après le next mais vu que le filtre nul est rencontré au premier tour de boucle, je n'ai lpus de bug mais le progamme se termine passer par les autres valeurs de prod.
On Error Resume Next
avant le filtre et :
On Error GoTo 0
après le next mais vu que le filtre nul est rencontré au premier tour de boucle, je n'ai lpus de bug mais le progamme se termine passer par les autres valeurs de prod.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
>
usdy
Messages postés
243
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
20 mai 2018
7 janv. 2009 à 11:49
7 janv. 2009 à 11:49
Tu a lu l'EDIT de mon poste précédant ?
usdy
Messages postés
243
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
20 mai 2018
6
>
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
7 janv. 2009 à 12:01
7 janv. 2009 à 12:01
dans ma boucle for, pour chaque produit, je stocke la somme de la colonne P dans une variable, c'est pour cela que j'ai besoin d'une boucle for qui parcourt toute les valeurs de prod.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
7 janv. 2009 à 12:14
7 janv. 2009 à 12:14
mais le progamme se termine passer par les autres valeurs de prod
Et en français ?
Montre la fonction ce serra plus clair.
Et en français ?
Montre la fonction ce serra plus clair.
usdy
Messages postés
243
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
20 mai 2018
6
7 janv. 2009 à 12:17
7 janv. 2009 à 12:17
dsl j'avais oublié de mettre sans : ce qui donne en français le programme se termine sans passé par les autres valeurs de prod
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
>
usdy
Messages postés
243
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
20 mai 2018
7 janv. 2009 à 12:21
7 janv. 2009 à 12:21
Ton code ?
usdy
Messages postés
243
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
20 mai 2018
6
>
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
7 janv. 2009 à 14:01
7 janv. 2009 à 14:01
voici mon code :
Public Sub macr()
fin = 3357
finbis = 928
'on désactive les filtres s'il y en avait et on se positionne sur la ligne des titres
Worksheets("feuilleA").Select
Worksheets("feuilleA").AutoFilterMode = False
Worksheets("feuilleA").Range("A" & C1).Select
'on désactive les filtres s'il y en avait et on se positionne sur la ligne des titres
Worksheets("feuilleB").Select
Worksheets("feuilleB").AutoFilterMode = False
Worksheets("feuilleB").Range("A" & C2).Select
Worksheets("land").Activate
For Each i In [f6:f40]
'Si on arrive à la dernière ligne du tableau
If (i.Value Like "FIN") Then
'on stocke cette dernière ligne dans une variable
lignefin = i.Row - 1
End If
Next
'Déclaration d'un bloc qui prend tous les noms des pays
Set plage = Worksheets("land").Range("F6:F" & lignefin)
'On utilise une variable "i" qui parcourt tous les pays
For Each i In plage
country = i.Value 'la variable country prend le pays de la ligne courante
'on filtre pour n'obtenir que les lignes contenant le pays stocké dans country
Worksheets("feuilleA").AutoFilterMode = False
Worksheets("feuilleA").Select
Selection.AutoFilter Field:=25, Criteria1:=country
'dans feuilleB
Worksheets("feuilleB").AutoFilterMode = False
Worksheets("feuilleB").Select
Selection.AutoFilter Field:=25, Criteria1:=country
End If
If (Worksheets("feuilleA").Range("g2").Value <> 0) And (Worksheets("feuilleB").Range("g2").Value <> 0) Then
remplissage 'fonction qui permet de remplir des autres feuilles
If (country = "France") Then
verif
End If
End If
Next
End Sub
Public Sub macr()
fin = 3357
finbis = 928
'on désactive les filtres s'il y en avait et on se positionne sur la ligne des titres
Worksheets("feuilleA").Select
Worksheets("feuilleA").AutoFilterMode = False
Worksheets("feuilleA").Range("A" & C1).Select
'on désactive les filtres s'il y en avait et on se positionne sur la ligne des titres
Worksheets("feuilleB").Select
Worksheets("feuilleB").AutoFilterMode = False
Worksheets("feuilleB").Range("A" & C2).Select
Worksheets("land").Activate
For Each i In [f6:f40]
'Si on arrive à la dernière ligne du tableau
If (i.Value Like "FIN") Then
'on stocke cette dernière ligne dans une variable
lignefin = i.Row - 1
End If
Next
'Déclaration d'un bloc qui prend tous les noms des pays
Set plage = Worksheets("land").Range("F6:F" & lignefin)
'On utilise une variable "i" qui parcourt tous les pays
For Each i In plage
country = i.Value 'la variable country prend le pays de la ligne courante
'on filtre pour n'obtenir que les lignes contenant le pays stocké dans country
Worksheets("feuilleA").AutoFilterMode = False
Worksheets("feuilleA").Select
Selection.AutoFilter Field:=25, Criteria1:=country
'dans feuilleB
Worksheets("feuilleB").AutoFilterMode = False
Worksheets("feuilleB").Select
Selection.AutoFilter Field:=25, Criteria1:=country
End If
If (Worksheets("feuilleA").Range("g2").Value <> 0) And (Worksheets("feuilleB").Range("g2").Value <> 0) Then
remplissage 'fonction qui permet de remplir des autres feuilles
If (country = "France") Then
verif
End If
End If
Next
End Sub
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
7 janv. 2009 à 15:29
7 janv. 2009 à 15:29
Je ne sais pas la tester vu que je n'ai pas le classeur en entier.
Mais j'ai détecté plusieur anomalies... j'ai mis des commentaires et des modif dans la macro
En indentant ton code c'est plus façile pour détecter quand il y a des erreurs dals les If, For etc..
Sais-tu comment faire un deboguage ?
Tu dit..
Mais j'ai détecté plusieur anomalies... j'ai mis des commentaires et des modif dans la macro
Public Sub macr() fin = 3357 finbis = 928 'on désactive les filtres s'il y en avait et on se positionne sur la ligne des titres Sheets("feuilleA").Select Sheets("feuilleA").AutoFilterMode = False Sheets("feuilleA").Range("A" & C1).Select 'on désactive les filtres s'il y en avait et on se positionne sur la ligne des titres Sheets("feuilleB").Select Sheets("feuilleB").AutoFilterMode = False Sheets("feuilleB").Range("A" & C2).Select '? Comprend pas, Range("A" & C2) est égal a Range("A0")? 'Que doit-il y avoir dedans ? Sheets("land").Activate ' For Each i In [f6:f40] ' 'Si on arrive à la dernière ligne du tableau ' If (i.Value Like "FIN") Then ' 'on stocke cette dernière ligne dans une variable ' lignefin = i.Row - 1 ' End If ' Next 'Peu être remplacer par... lignefin = Sheets("land").Range("F65536").End(xlUp).Row 'Déclaration d'un bloc qui prend tous les noms des pays Set plage = Sheets("land").Range("F6:F" & lignefin) 'On utilise une variable "i" qui parcourt tous les pays For Each i In plage country = i.Value 'la variable country prend le pays de la ligne courante 'on filtre pour n'obtenir que les lignes contenant le pays stocké dans country Sheets("feuilleA").AutoFilterMode = False Sheets("feuilleA").Select Selection.AutoFilter Field:=25, Criteria1:=country 'dans feuilleB Sheets("feuilleB").AutoFilterMode = False Sheets("feuilleB").Select Selection.AutoFilter Field:=25, Criteria1:=country 'End If Pas de If ? If (Sheets("feuilleA").Range("g2").Value <> 0) And (Sheets("feuilleB").Range("g2").Value <> 0) Then remplissage 'fonction qui permet de remplir des autres feuilles If (country = "France") Then verif End If End If Next End Sub
En indentant ton code c'est plus façile pour détecter quand il y a des erreurs dals les If, For etc..
Sais-tu comment faire un deboguage ?
Tu dit..
usdy
Messages postés
243
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
20 mai 2018
6
7 janv. 2009 à 15:46
7 janv. 2009 à 15:46
j'ai finalement réussi à régler mon problème.
merci pour ton aide
merci pour ton aide