Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 !

candido57

XLDnaute Occasionnel
Bonsoir,

Je voudrais extraire des données dans plusieurs feuilles qui se nomment S42, S43, S44 ( Nom des semaines de S2 à S52) et sur cette feuilles, il y a dans la colonne C des noms vs01, vs02, gl02 ect....
Je souhaite extraire par exemple tous les vs01 depuis le début de l'année, mais avec la lettre R qui se trouve dans la colonne P sur le tableau dans la feuille "Extraire". il faudrait que toutes les colonnes soient remplies
Je ne connais pas trop en macro, j'ai cherché un peu, mais il n'y a rien qui correspond .

Pouvez vous m'aider ?

Merci beaucoup
 

Pièces jointes

Re : Extraction

'llo,

Je dois dire que je ne comprends pas réellement ta demande. Ok tu veux pouvoir rapatrier par exemple tous les vs02 de l'année pour les coller dans ton onglet Extraction. Mais :
- C'est quoi ta lettre R, qu'a-t-elle comme impact ?
- UNe fois que tu as tes données, tu fais quoi ?
 
Re : Extraction

En attendant plus de détails, je te propose une solution.

J'ai modifié l'aspect de ton document de manière à exploiter au mieux les données. L'idée est de n'avoir qu'un seul onglet de données, je n'ai rajouté que deux colonnes qui correspondent respectivement à la couleur de la carte et à la semaine.

Voici le code utilisé :
Code:
Private Sub CommandButton1_Click()


    ' Choisir le chef d'équipe
chef = InputBox("Quel Chef d'équipe ?")

    ' Choisir la Carte
carte = InputBox("Quelle carte ?")
    
    ' Filtrer par onglet
Sheets("data").Activate
Selection.AutoFilter Field:=3, Criteria1:=chef
Selection.AutoFilter Field:=4, Criteria1:=carte

    ' Extraction des données
        ' Création nouvel onglet
Set NewFeuil = Worksheets.Add(Sheets(1))
NewFeuil.Name = "Extraction"
        
        ' Coller la feuille à la fin
Sheets("extraction").Move after:=Sheets(Sheets.Count)

        ' Copier coller les données
Sheets("data").Activate
Sheets("data").Range("a1").Select
Selection.CurrentRegion.Select
Selection.Copy

Sheets("extraction").Activate
Sheets("extraction").Range("a1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

    ' Remise à 0 des filtres
Sheets("data").Select
    Selection.AutoFilter Field:=1
    Selection.AutoFilter Field:=2
    Selection.AutoFilter Field:=3
    Selection.AutoFilter Field:=4
    Selection.AutoFilter Field:=5
    Selection.AutoFilter Field:=6
    Selection.AutoFilter Field:=7
    Selection.AutoFilter Field:=8
    Selection.AutoFilter Field:=9
    Selection.AutoFilter Field:=10
    Selection.AutoFilter Field:=11
    Selection.AutoFilter Field:=12
    Selection.AutoFilter Field:=13
    Selection.AutoFilter Field:=14
    Selection.AutoFilter Field:=15
    Selection.AutoFilter Field:=16
    Selection.AutoFilter Field:=17
    Selection.AutoFilter Field:=18
    Selection.AutoFilter Field:=19
    Selection.AutoFilter Field:=20
    Selection.AutoFilter Field:=21
    Selection.AutoFilter Field:=22
    
Sheets("extraction").Activate
Sheets("extraction").Range("a1").Select

End Sub

Private Sub CommandButton2_Click()

    ' Réinitialiser
Sheets("data").Select
    Selection.AutoFilter Field:=1
    Selection.AutoFilter Field:=2
    Selection.AutoFilter Field:=3
    Selection.AutoFilter Field:=4
    Selection.AutoFilter Field:=5
    Selection.AutoFilter Field:=6
    Selection.AutoFilter Field:=7
    Selection.AutoFilter Field:=8
    Selection.AutoFilter Field:=9
    Selection.AutoFilter Field:=10
    Selection.AutoFilter Field:=11
    Selection.AutoFilter Field:=12
    Selection.AutoFilter Field:=13
    Selection.AutoFilter Field:=14
    Selection.AutoFilter Field:=15
    Selection.AutoFilter Field:=16
    Selection.AutoFilter Field:=17
    Selection.AutoFilter Field:=18
    Selection.AutoFilter Field:=19
    Selection.AutoFilter Field:=20
    Selection.AutoFilter Field:=21
    Selection.AutoFilter Field:=22
    
Sheets("index").Select

End Sub
 

Pièces jointes

Re : Extraction

Bonjour,

Je vais essayer d’être plus clair.
Voilà, j’ai un fichier et dans ce dernier j’ai 52 feuilles ( S2, S…. S42, S43 etc ) qui correspond à des semaine. chaque semaine, je saisi des rébus et ces rébus sont affectés à une équipe vs01 ou vs02 ou gl01. Je voudrais extraire sur la feuille "Extraire" , les rébus de l’année par exemple de l’équipe vs01 et la couleur R=rouge. Si vous regardez mon tableau, il y a une partie carte rouge et une partie carte bleue , je voudrais aussi avoir la possibilité de choisir entre ces deux critères.
Ce que vous me proposez, c’est correcte mais, j’aimerais choisir un des critères, par exemple le type.
Il faut la macro aille chercher dans tous les fichiers existant de semaine.

Merci beaucoup de votre aide
 
Dernière édition:
Re : Extraction

Si possible je souhaite garder la même feuille extraction . Chaque fois que je fais extraction, le résultat antérieur s’efface.
Je souhaite extraire uniquement les données des semaine ( S42, S43, S44 etc..)
 
Re : Extraction

'llo,

Qu'il ne fonctionne plus c'est normal puisque tu as modifié le nom de l'onglet qui déclenchait la macro.

Ensuite cela va être compliqué de répondre à ton besoin en l'état puisque (pour faire court) tu n'as pas un tableau uni dans chaque feuille. Je m'explique; comment ta macro va t-elle savoir que ta ligne en question correspond à une carte verte ou rouge puisque rien ne l'indique sur la dite ligne. Et pire entre chaque chef d'équipe tu ajoutes une ligne d'espace ! Voila la raison pour laquelle j'avais refait ton tableau en y incorporant une nouvelle colonne, intitulée carte.

Maintenant je n'ai pas non plus une maîtrise complète de l'outil et peut être existe-t-il une idée lumineuse pour coder tout qui répond à ton besoin ?

Donc pour moi deux options, ou bien quelqu'un arrive à te coder une macro qui déchire tout, et qui fait tout qu'est ce que tu veux avec un tel "format". Ou bien tu changes de format.

Désolé de ne pouvoir plus t'aider
 
Re : Extraction

Bonjour candido,
Salut bien don_pets,
J'ai refaits la macro, je pense que c'est dans l'attente.
Bruno

EDIT
Si tu veux avec la date B2 remplace la macro du fichier par celle-çi
Code:
Sub recap()
dd = [B2]
chef = [E2]
coul = [H2]
[A7:T65000].ClearContents
lig = 7
For Each sh In Worksheets
If Left(sh.Name, 1) = "S" Then
With Sheets(sh.Name)
For k = 5 To .[A65000].End(3).Row
If .Cells(k, 1) = dd And .Cells(k, 3) = chef And .Cells(k, 16) = coul Then
Sheets("Extraction").Range("A" & lig & ":T" & lig).Value = .Range("A" & k & ":T" & k).Value
lig = lig + 1
End If
Next
End With
End If
Next
End Sub
 

Pièces jointes

Dernière édition:
Re : Extraction

Bonjour,

Merci beaucoup, c’est exactement ce que je voulais.
Je me suis servi de ta macro pour rajouter des critères , par exemple la famille et l’épaisseur.
Je voudrais savoir que dois je ajouter dans la macro pour si je ne mets rien dans la case, elle prend en compte les autre critères sans `se soucier de la case vide .

Encore merci beaucoup
 
Re : Extraction

Voici une nouvelle macro qui remplace l'autre.
Bruno
Code:
Sub recap()
Epaisseur = [C2]
famille = [B2]
chef = [E2]
coul = [H2]
[A7:T65000].ClearContents
lig = 7


If Epaisseur = "" Then
For Each sh In Worksheets
If Left(sh.Name, 1) = "S" Then
With Sheets(sh.Name)
For k = 5 To .[A65000].End(3).Row
If .Cells(k, 9) = famille And .Cells(k, 3) = chef And .Cells(k, 16) = coul Then
Sheets("Extraction").Range("A" & lig & ":T" & lig).Value = .Range("A" & k & ":T" & k).Value
lig = lig + 1
End If
Next
End With
End If
Next
Exit Sub
End If


If famille = "" Then
For Each sh In Worksheets
If Left(sh.Name, 1) = "S" Then
With Sheets(sh.Name)
For k = 5 To .[A65000].End(3).Row
If .Cells(k, 10) = Epaisseur And .Cells(k, 3) = chef And .Cells(k, 16) = coul Then
Sheets("Extraction").Range("A" & lig & ":T" & lig).Value = .Range("A" & k & ":T" & k).Value
lig = lig + 1
End If
Next
End With
End If
Next
Exit Sub
End If
'tous
For Each sh In Worksheets
If Left(sh.Name, 1) = "S" Then
With Sheets(sh.Name)
For k = 5 To .[A65000].End(3).Row
If .Cells(k, 9) = famille And .Cells(k, 10) = Epaisseur And .Cells(k, 3) = chef And .Cells(k, 16) = coul Then
Sheets("Extraction").Range("A" & lig & ":T" & lig).Value = .Range("A" & k & ":T" & k).Value
lig = lig + 1
End If
Next
End With
End If
Next
End Sub
J'ai pas testé mais ça doit le faire
 
- 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

Discussions similaires

Réponses
10
Affichages
749
  • Question Question
Microsoft 365 Problème Code VBA
Réponses
9
Affichages
531
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…