Aidez moi SVP problème en vba :- (
Résolu
usdy
Messages postés
243
Date d'inscription
Statut
Membre
Dernière intervention
-
usdy Messages postés 243 Date d'inscription Statut Membre Dernière intervention -
usdy Messages postés 243 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Aidez moi SVP problème en vba :- (
- Excel compter cellule couleur sans vba - Guide
- Mkdir vba ✓ - Forum VB / VBA
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
7 réponses
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+
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
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+
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ??
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.
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
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..