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.

image

Mes feuilles de calculs :

image

Ma feuille de calcul "ALL-TP" ou j'ai toutes mes données que j'aimerai copier dans leur feuilles respectives :

image

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 Sub

Merci 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 Sub

Merci 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.

image

Voici ce que j'ai en gros.

image

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).Copy

par :

Worksheets("ALL-TP").Range("A" & I & ":C" & I).Copy

comme ç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 😥

Rechercher des sujets similaires à "copy paste entre feuille calculs conditions"