Utilisation d'une Boucle avec Autofilter

  • Initiateur de la discussion Initiateur de la discussion tounsy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

tounsy

Guest
Bonjour,

Je travaille actuellement sur une macro excel qui a pour but de me faire un récapitulatif pour mes vendeurs avec calcul de commissions.

En VBA, j'ai fait une boucle pour qu'a chaque vedeur d'une plage, une feuille soit crée est des lignes provenant de la feuille "Base" soient recopiées.

Pour cela j'utilise la Fonction AutoFilter tel quel :
Selection.AutoFilter Field:=38, Criteria1:=temp(I, 1)

Temp(I, 1) étant la variable du nom de mon vendeur.

Le problème est que je tombe sur une erreur 400 très certainement dûe à ce que le vendeur 'temp(I, 1)' n'ai pas fait de vente ce mois-ci.

Comment contourner ce problème ?

J'ai fait quelques tests de IF mais je n'y arrive vraiement pas ..... 😕

Merci beaucoups pour votre aide 😉
 

Pièces jointes

Re : Utilisation d'une Boucle avec Autofilter

Bonjour et bienvenue

essaye ça (si ton analyse de l'erreur est bonne)
Code:
Sheets("base").Select
If Application.WorksheetFunction.SumIf(Range("AL:AL"), temps(I, 1)) > 0 Then
    Selection.AutoFilter Field:=38, Criteria1:=temp(I, 1)
    If Range("A2").Value <> "" Then
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets(temp(I, 1)).Select
    Range("A6").Select
    Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, operation:=xlNone, skipBlanks:=False, Transpose:=False
    End If
End If
 
Re : Utilisation d'une Boucle avec Autofilter

Bonjour et bienvenue

essaye ça (si ton analyse de l'erreur est bonne)
Code:
Sheets("base").Select
If Application.WorksheetFunction.SumIf(Range("AL:AL"), temps(I, 1)) > 0 Then
    Selection.AutoFilter Field:=38, Criteria1:=temp(I, 1)
    If Range("A2").Value <> "" Then
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets(temp(I, 1)).Select
    Range("A6").Select
    Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, operation:=xlNone, skipBlanks:=False, Transpose:=False
    End If
End If


Bonjour wilfried_42,

Merci de t'être penché sur mon problème 😉
Je n'ai effectivement plus le message d'erreur mais maintenant la récupérations des données ne se fait plus....🙁
 
Re : Utilisation d'une Boucle avec Autofilter

re:

bizarre, m'enfin
autre solution

Code:
Sheets("base").Select
'If Application.WorksheetFunction.SumIf(Range("AL:AL"), temp(I, 1)) > 0 Then
    Selection.AutoFilter Field:=38, Criteria1:=temp(I, 1)
    If Range("A65500").End(xlUp).Row > 1 Then
        Range("A2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Sheets(temp(I, 1)).Select
        Range("A6").Select
        Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, operation:=xlNone, skipBlanks:=False, Transpose:=False
    End If
'End If
'Récupération du Numéro de Commission
'If Application.WorksheetFunction.SumIf(Range("AL:AL"), temp(I, 1)) > 0 Then
    Sheets("base").Select
    Selection.AutoFilter Field:=38, Criteria1:=temp(I, 1)
    If Range("A65500").End(xlUp).Row > 1 Then
        Range("AI2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Sheets(temp(I, 1)).Select
        Range("B6").Select
        Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, operation:=xlNone, skipBlanks:=False, Transpose:=False
    End If
 
Re : Utilisation d'une Boucle avec Autofilter

re:

bizarre, m'enfin
autre solution

Code:
Sheets("base").Select
'If Application.WorksheetFunction.SumIf(Range("AL:AL"), temp(I, 1)) > 0 Then
    Selection.AutoFilter Field:=38, Criteria1:=temp(I, 1)
    If Range("A65500").End(xlUp).Row > 1 Then
        Range("A2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Sheets(temp(I, 1)).Select
        Range("A6").Select
        Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, operation:=xlNone, skipBlanks:=False, Transpose:=False
    End If
'End If
'Récupération du Numéro de Commission
'If Application.WorksheetFunction.SumIf(Range("AL:AL"), temp(I, 1)) > 0 Then
    Sheets("base").Select
    Selection.AutoFilter Field:=38, Criteria1:=temp(I, 1)
    If Range("A65500").End(xlUp).Row > 1 Then
        Range("AI2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Sheets(temp(I, 1)).Select
        Range("B6").Select
        Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, operation:=xlNone, skipBlanks:=False, Transpose:=False
    End If

J'ai cette fois-ci l'erreur 400 ......

En faite, la macro commence par :
Selection.AutoFilter Field:=38, Criteria1:=temp(I, 1)

Et la valeur temp(I, 1) est présente dans ma plage --> création de l'onglet
Mais n'est pas presente dans la feuille base --> erreur 400.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

P
Réponses
15
Affichages
3 K
Pauliakov
P
T
  • Question Question
Réponses
2
Affichages
1 K
Trinitybarb
T
E
Réponses
0
Affichages
1 K
eeyglunent
E
L
  • Question Question
Réponses
8
Affichages
1 K
lepigoennier
L
L
Réponses
2
Affichages
20 K
Lauwn
L
V
Réponses
5
Affichages
1 K
vgrenet
V
Retour