Microsoft 365 Macro copié collé valeur se trouvant dans d'autres feuilles

Croc_de_loups

XLDnaute Junior
Bonjour,

Suite à de nombreuses recherches sur différents forums, je ne parviens pas à réaliser ma macro.
Je débute dans le codage VBA.

Je cherche une macro qui me permettrait de copier les N° de commandes placé dans chaque feuilles trier par mois et de les collé à la suite dans la feuille "Suivi commande" dans la colonne A.

J'ai essayé une macro mais cela fonctionne qu'à partir du mois de Janvier, après, je n'arrive pas à trouvé une suite à ma macro afin que les N° de commandes des autres mois se colle à la ligne juste en dessous de la dernière commande du mois dernier.
Voici la macro que j'utilise :
Sub Nouveau_Test()

Worksheets("Commande Janvier").Range("A:A").Copy _
Destination:=Worksheets("Suivi commandes").Range("A:A")

Worksheets("Commande Février").Range("A:A").Copy _
Destination:=Worksheets("Suivi commandes").Range("A:A")




End Sub


Je ne pense pas avoir été clair, je vous place ci-joint un fichier Excel test qui pourrait peut être vous aider.
 

Pièces jointes

  • Macro copié collé commandes mois.xlsx
    16.4 KB · Affichages: 8
Solution
Et si vous voulez supprimer les doublons éventuels faites :
VB:
Sub Insérer()
    [A:A].ClearContents: [K:L].ClearContents: N = 2
    [A1] = "N° de commande"
    Application.ScreenUpdating = False
    For Each F In Worksheets                            ' pour toutes les feuilles
        If F.Name <> "Suivi commande" Then              ' Hormi feuille de suivi
            DLSuivi = 1 + [A65500].End(xlUp).Row        ' Première ligne vide
            DL = Sheets(F.Name).[A65500].End(xlUp).Row  ' Dernière ligne occupée de la feuille
            tablo = Sheets(F.Name).Range("A1:A" & DL)   ' Mettre la liste dans un tableau et la coller
            Cells(DLSuivi, "A").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
            Cells(N, "K") = F.Name...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Crocs de loups,
Un essai en PJ avec :
VB:
Sub Insérer()
    [A:A].ClearContents
    [A1] = "N° de commande"
    Application.ScreenUpdating = False
    For Each f In Worksheets                            ' pour toutes les feuilles
        If f.Name <> "Suivi commande" Then              ' Hormi feuille de suivi
            DLSuivi = 1 + [A65500].End(xlUp).Row        ' Première ligne vide
            DL = Sheets(f.Name).[A65500].End(xlUp).Row  ' Dernière ligne occupée de la feuille
            tablo = Sheets(f.Name).Range("A1:A" & DL)   ' Mettre la liste dans un tableau et la coller
            Cells(DLSuivi, "A").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
        End If
    Next f
End Sub
 

Pièces jointes

  • Macro copié collé commandes mois.xlsm
    24.3 KB · Affichages: 4

Croc_de_loups

XLDnaute Junior
Bonjour Crocs de loups,
Un essai en PJ avec :
VB:
Sub Insérer()
    [A:A].ClearContents
    [A1] = "N° de commande"
    Application.ScreenUpdating = False
    For Each f In Worksheets                            ' pour toutes les feuilles
        If f.Name <> "Suivi commande" Then              ' Hormi feuille de suivi
            DLSuivi = 1 + [A65500].End(xlUp).Row        ' Première ligne vide
            DL = Sheets(f.Name).[A65500].End(xlUp).Row  ' Dernière ligne occupée de la feuille
            tablo = Sheets(f.Name).Range("A1:A" & DL)   ' Mettre la liste dans un tableau et la coller
            Cells(DLSuivi, "A").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
        End If
    Next f
End Sub
Bonjour sylvanu,

Merci de ton aide !
Petite question, cette macro permet-elle de copié collé toutes les commandes placé dans chaques feuilles et ensuite les collé sur la feuille Suivi commande ? Si oui je te remercie grandement de ton aide.

Bonne journée à toi.
 

Croc_de_loups

XLDnaute Junior
Bonjour à tous
Edit .... re à la bourre ;)

@Croc_de_loups

Je te propose ce fichier qui copie toutes les feuilles quelque soit le nombre

Merci de ton retour

@Phil69970
Bonjour Phil,

Je ne peux activer ta macro suite à la sécurité de l'entreprise(je ne peut pas demander à changer la sécurité désolé) . Pourrais-tu me copié ta macro et la mettre ici stp.

Merci à toi quand même
 

Phil69970

XLDnaute Barbatruc
Re

VB:
Sub Copie()

Dim DerligDst&, DerligSrc&, i&
Dim Ws1 As Worksheet
Set Ws1 = Worksheets("Suivie commande")

Ws1.[A:A].ClearContents
DerligDst = 1

For i = 1 To Worksheets.Count
    If Worksheets(i).Name <> "Suivie commande" Then
        DerligSrc = Worksheets(i).Range("A" & Rows.Count).End(xlUp).Row
        Ws1.Range("A" & DerligDst & ":A" & DerligDst + DerligSrc - 1).Value = Worksheets(i).Range("A1:A" & DerligSrc).Value
        DerligDst = Ws1.Range("A" & Rows.Count).End(xlUp).Row + 1
    End If
Next i

Set Ws1 = Nothing
MsgBox "Les valeurs ont été copiées", vbInformation, "Copie effectuée !"

End Sub

Code à mettre ici :

1686306922852.png


@Phil69970
 

Pièces jointes

  • 1686306631573.png
    1686306631573.png
    63.7 KB · Affichages: 12

Croc_de_loups

XLDnaute Junior
Re

VB:
Sub Copie()

Dim DerligDst&, DerligSrc&, i&
Dim Ws1 As Worksheet
Set Ws1 = Worksheets("Suivie commande")

Ws1.[A:A].ClearContents
DerligDst = 1

For i = 1 To Worksheets.Count
    If Worksheets(i).Name <> "Suivie commande" Then
        DerligSrc = Worksheets(i).Range("A" & Rows.Count).End(xlUp).Row
        Ws1.Range("A" & DerligDst & ":A" & DerligDst + DerligSrc - 1).Value = Worksheets(i).Range("A1:A" & DerligSrc).Value
        DerligDst = Ws1.Range("A" & Rows.Count).End(xlUp).Row + 1
    End If
Next i

Set Ws1 = Nothing
MsgBox "Les valeurs ont été copiées", vbInformation, "Copie effectuée !"

End Sub

Code à mettre ici :

Regarde la pièce jointe 1171996

@Phil69970
Merci !
Par contre le système m'indique une erreur.

L'erreur se trouve ici :

Set Ws1 = Worksheets("Suivie commande")

Le système me dis que "l'indice n'appartient pas à la sélection", est-ce normal ? Je ne pense pas, est-ce que c'est moi qui ai mal copié la macro ? Pourrais-tu m'aider car je ne comprend pas.

Merci de ton aide
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Petite question, cette macro permet-elle de copié collé toutes les commandes placé dans chaques feuilles et ensuite les collé sur la feuille Suivi commande ? Si oui je te remercie grandement de ton aide.
Vous avez testé ma PJ ???
janv 123
fev 25
mar 75
avr 30
jui 37

Suivi 297.

Pourquoi posez vous la question ?

En PJ le même mais je compte les N° trouvés, ce qui évitera de compter. :)
 

Pièces jointes

  • Macro copié collé commandes mois V2.xlsm
    24.8 KB · Affichages: 1
Dernière édition:

Croc_de_loups

XLDnaute Junior
Vous avez testé ma PJ ???
janv 123
fev 25
mar 75
avr 30
jui 37

Suivi 297.

Pourquoi posez vous la question ?
Comme je l'ai dis aux autres personnes qui m'ont aidé en m'envoyant leur macro, je ne peux pas voir sur votre fichier Excel votre macro à cause de la sécurité au sein de mon entreprise.
Pourriez-vous m'en faire un copié collé de votre macro ici afin que je puisse la testé.

Merci à vous
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
La nouvelle macro avec comptage :
VB:
Sub Insérer()
    [A:A].ClearContents: [K:L].ClearContents: N = 2
    [A1] = "N° de commande"
    Application.ScreenUpdating = False
    For Each F In Worksheets                            ' pour toutes les feuilles
        If F.Name <> "Suivi commande" Then              ' Hormi feuille de suivi
            DLSuivi = 1 + [A65500].End(xlUp).Row        ' Première ligne vide
            DL = Sheets(F.Name).[A65500].End(xlUp).Row  ' Dernière ligne occupée de la feuille
            tablo = Sheets(F.Name).Range("A1:A" & DL)   ' Mettre la liste dans un tableau et la coller
            Cells(DLSuivi, "A").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
            Cells(N, "K") = F.Name: Cells(N, "L") = UBound(tablo, 1): N = N + 1
        End If
    Next F
    Cells(1, "K") = "Suivi de commande": Cells(1, "L") = [A65500].End(xlUp).Row - 1
End Sub

A noter qu'au post #2 il y avait la macro. J'ai du mal à vous suivre.
 

Croc_de_loups

XLDnaute Junior
Re

@Croc_de_loups

Chez moi cela fonctionne

J'ai ouvert ton fichier du post #1 puis j'ai copié mon code qui est dans le post # 7 (Voir l'image)

Regarde la pièce jointe 1172000
Je l'ai copié ici

Regarde la pièce jointe 1172001

Et j'ai appuyé sur F5

Regarde la pièce jointe 1172002

Et je n'ai aucune erreur

En général quand je poste un fichier je l'ai testé .....;)

@Phil69970
Je ne dis pas que vous l'avez testé pas de problème je viens juste de trouver mon erreur. Le code se met dans un fichier nommé "Module 1" . Est-ce que vous savez comment je peux déplacer le code afin de le mettre à l'endroit où vous m'avez indiqué ?
Merci à vous
 

Croc_de_loups

XLDnaute Junior
Re,
La nouvelle macro avec comptage :
VB:
Sub Insérer()
    [A:A].ClearContents: [K:L].ClearContents: N = 2
    [A1] = "N° de commande"
    Application.ScreenUpdating = False
    For Each F In Worksheets                            ' pour toutes les feuilles
        If F.Name <> "Suivi commande" Then              ' Hormi feuille de suivi
            DLSuivi = 1 + [A65500].End(xlUp).Row        ' Première ligne vide
            DL = Sheets(F.Name).[A65500].End(xlUp).Row  ' Dernière ligne occupée de la feuille
            tablo = Sheets(F.Name).Range("A1:A" & DL)   ' Mettre la liste dans un tableau et la coller
            Cells(DLSuivi, "A").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
            Cells(N, "K") = F.Name: Cells(N, "L") = UBound(tablo, 1): N = N + 1
        End If
    Next F
    Cells(1, "K") = "Suivi de commande": Cells(1, "L") = [A65500].End(xlUp).Row - 1
End Sub

A noter qu'au post #2 il y avait la macro. J'ai du mal à vous suivre.
J'avais pas vu excusez moi, je vais essayé votre macro et je reviens vers vous
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
st-ce que vous savez comment je peux déplacer le code afin de le mettre à l'endroit où vous m'avez indiqué ?
????
Il n'y a aucun endroit indiqué !!!!
Vous la mettez où vous voulez, vous l'exécuter par :
- Alt+F8 et validez INSERER
ou
- Vous creez n'importe quel dessin sur la feuille Suivi ( par insertion Formes )
- Vous cliquez droit dessus et activer "Affecter une macro ..."
- Vous valider la macro INSERER
Chaque appui sur ce bouton lancera la macro.
 

Croc_de_loups

XLDnaute Junior
Re,
La nouvelle macro avec comptage :
VB:
Sub Insérer()
    [A:A].ClearContents: [K:L].ClearContents: N = 2
    [A1] = "N° de commande"
    Application.ScreenUpdating = False
    For Each F In Worksheets                            ' pour toutes les feuilles
        If F.Name <> "Suivi commande" Then              ' Hormi feuille de suivi
            DLSuivi = 1 + [A65500].End(xlUp).Row        ' Première ligne vide
            DL = Sheets(F.Name).[A65500].End(xlUp).Row  ' Dernière ligne occupée de la feuille
            tablo = Sheets(F.Name).Range("A1:A" & DL)   ' Mettre la liste dans un tableau et la coller
            Cells(DLSuivi, "A").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
            Cells(N, "K") = F.Name: Cells(N, "L") = UBound(tablo, 1): N = N + 1
        End If
    Next F
    Cells(1, "K") = "Suivi de commande": Cells(1, "L") = [A65500].End(xlUp).Row - 1
End Sub

A noter qu'au post #2 il y avait la macro. J'ai du mal à vous suivre.
Il m'indique une erreur ici :
Cells(DLSuivi, "A").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
Je ne comprend pas pourquoi. Pouvez vous m'expliquer ce que fais cette ligne et me dire s'il y a des modifications à faire svp ?
Merci
 

Discussions similaires

Statistiques des forums

Discussions
313 330
Messages
2 097 236
Membres
106 883
dernier inscrit
Papalo