Copy / Paste entre feuille de calculs avec des conditions
Bonjour à tous 👋
J'ai réalisé une macro pour trier mon fichier Excel. Cependant, je me heurt à quelques problèmes.
Voici comment s'ordonne mon tableau Excel :
Sheets1 - Colonne A : Le nom de toutes mes feuilles de calculs.
Mes feuilles de calculs :
Ma feuille de calcul "ALL-TP" ou j'ai toutes mes données que j'aimerai copier dans leur feuilles respectives :
J'aimerai copier chaque ligne et les coller dans la feuille de calculs qui leur correspond depuis les valeurs que j'ai mis dans la colonne 1 de ma feuil 1.
Ex :
- Jordan Belfort & Georges dans la feuille de calcul appelé "1"
- Jean Dujardin dans la feuille "2"
- …
Malheureusement je ne peut pas utiliser la fonction "= cette valeur" mais plutôt "contient la valeur 1" (fonction cherche)
Voici le bout de code que j'ai réalisé :
Sub Trie_ALLTP()
a = Worksheets("ALL-TP").Cells(Rows.Count, 2).End(xlUp).Row
For I = 2 To a
If Worksheets("ALL-TP").Cells(I, 3).Value = "Colonne A, Sheets1" Then
Worksheets("ALL-TP").Rows(I).Copy
Worksheets("Colonne A, sheets 1").Activate
b = Worksheets("Colonne A, Sheets 1").Cells(Rows.Count, 2).End(xlUp).Row
Worksheets("Colonne A, Sheets 1").Cells(b + 1, 1).Select
ActiveSheet.Paste
Worksheets("ALL-TP").Activate
End If
Next
Application.CutCopyMode = False
ThisWorkbook.Worksheets("ALL-TP").Cells(1, 1).Select
End SubMerci beaucoup pour votre aide 🤝
Si vous avez une quelconque question car j'ai peut-être mal exprimé mon problème, n'hésitez pas.
Hello,
Pourquoi faire la feuil1 ? Tu devrais ajouter cette colonne avec les noms de feuille (tres bonne idée au passge) à la fin de ton tableau de la feuille ALL-TP en affectant sur chaque ligne la feuille de destination et je pense qu'avec ce code on devrait être bon (nom de feuille en colonne D) :
Sub Trie_ALLTP()
dim nom_feuille as string
a = Worksheets("ALL-TP").Cells(Rows.Count, 2).End(xlUp).Row
For I = 2 To a
nom_feuille = range("D" & I).value
Worksheets("ALL-TP").Rows(I).Copy
Worksheets(nom_feuille).Activate
b = Worksheets(nom_feuille).Cells(Rows.Count, 2).End(xlUp).Row
Worksheets(nom_feuille).Cells(b + 1, 1).Select
ActiveSheet.Paste
Worksheets("ALL-TP").Activate
End If
Next
Application.CutCopyMode = False
ThisWorkbook.Worksheets("ALL-TP").Cells(1, 1).Select
End SubMerci pour ta réponse.
Je ne peux coller le nom de mes feuilles à la fin de mon tableau. En effet, quand je lance le code que tu as réalisé, il me copie également le nom de mes feuille qu'on vient de rajouter dans la colonne "D". C'est pour ça que je pense qu'il est préférable d'aller chercher le nom de le feuille dans la "Sheet1" - Colonne A.
Sinon, je pensais qu'on peut juste lui dire :
Si Valeur de la colonne C = Valeur d'une feuille dans le classeur
Alors, copie la ligne dans la feuille "ALL-TP" et colle dans la feuille qui porte le nom de la valeur dans la case C.
Voici ce que j'ai en gros.
Voici le résultat que je souhaite. Ici, les feuilles sont déjà créés…. et la macro va chercher les valeurs dans la colonne C pour copier les lignes et les coller dans les feuilles qui portent le même nom.
Merci beaucoup pour ton aide 🤝
Un truc du genre :
If cell.value (colonne C) = Sheetname Then
Copier la ligne et la coller dans la sheet qui lui correspond.
MMmmmm, j'en sais trop rien...
tu n'es pas obligé de copier la ligne entière, juste la plage qui t'intéresse.
remplace :
Worksheets("ALL-TP").Rows(I).Copypar :
Worksheets("ALL-TP").Range("A" & I & ":C" & I).Copycomme ça tu n'as pas la colonne D de copiée
Toujours le même problème...
Seulement une ligne est copié dans chaque feuille et l'entreprise ne correspond pas au nom de la feuille 😥