Copier Coller à la suite
maevaaugereau
-
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à copier coller des données dans des feuilles de calculs précises en fonction de la valeur de la colonne B.
(Si dans l'onglet "AJOUTER UN PRODUIT", B contient "Bordeaux" copier la ligne dans l'onglet "Bordeaux")
Je travaille avec le code suivant :
Sub RANGER()
J = 179
For i = 2 To 65536
If Application.Workbooks("CAVE.xlsm").Worksheets("AJOUTER UN PRODUIT").Range("B" & i).Value = "Bordeaux" Then
Application.Workbooks("CAVE.xlsm").Worksheets("Bordeaux").Range("B" & J & ":T" & J).Value = Application.Workbooks("CAVE.xlsm").Worksheets("AJOUTER UN PRODUIT").Range("B" & i & ":T" & i).Value
J = J + 1
End If
Next i
End Sub
Ce code fonctionne très bien et colle les données que je veux à partir de la ligne 179 comme le défini "J"
Seulement le document excek est voué à vivre et l'onglet "AJOUTER UN PRODUIT" à être alimenté de nouvelles données.
J'aimerais donc pouvoir copier les données de "AJOUTER UN PRODUIT" à la suite des données déjà présentes dans "BORDEAUX"
Pourriez-vous me dire ce que je dois changer dans le code ci-dessus pour que cela fonctionne...
Merci beaucoup d'avance,
Très bonne journée :)
Je cherche à copier coller des données dans des feuilles de calculs précises en fonction de la valeur de la colonne B.
(Si dans l'onglet "AJOUTER UN PRODUIT", B contient "Bordeaux" copier la ligne dans l'onglet "Bordeaux")
Je travaille avec le code suivant :
Sub RANGER()
J = 179
For i = 2 To 65536
If Application.Workbooks("CAVE.xlsm").Worksheets("AJOUTER UN PRODUIT").Range("B" & i).Value = "Bordeaux" Then
Application.Workbooks("CAVE.xlsm").Worksheets("Bordeaux").Range("B" & J & ":T" & J).Value = Application.Workbooks("CAVE.xlsm").Worksheets("AJOUTER UN PRODUIT").Range("B" & i & ":T" & i).Value
J = J + 1
End If
Next i
End Sub
Ce code fonctionne très bien et colle les données que je veux à partir de la ligne 179 comme le défini "J"
Seulement le document excek est voué à vivre et l'onglet "AJOUTER UN PRODUIT" à être alimenté de nouvelles données.
J'aimerais donc pouvoir copier les données de "AJOUTER UN PRODUIT" à la suite des données déjà présentes dans "BORDEAUX"
Pourriez-vous me dire ce que je dois changer dans le code ci-dessus pour que cela fonctionne...
Merci beaucoup d'avance,
Très bonne journée :)
A voir également:
- Copier Coller à la suite
- Historique copier coller - Guide
- Style d'écriture a copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Arobase copier coller - Forum Windows 10
3 réponses
Bonjour Maeva, bonjour le forum,
Si l'ai bien compris, essaie comme ça :
Si l'ai bien compris, essaie comme ça :
Sub RANGER() Dim CL As Workbook 'déclare la variable CL (CLasseur) Dim OS As Worksheet 'déclare la variable OS (Onglet Source) Dim OD As Worksheet 'déclare la variable OD (Onglet Destination) Dim DL As Long 'déclare la variable DL (Dernière Ligne) Dim I As Long 'déclare la variable I (Incrément) Dim J As Long 'déclare la variable J (incrément) Set CL = ThisWorkbook 'définit le classeur CL Set OS = CL.Worksheets("AJOUTER UN PRODUIT") 'définit l'onglet source OS Set OD = CL.Worksheets("Bordeaux") 'définit l'onglet destination OD DL = OS.Cells(Application.Rows.Count, "B").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne B de l'onglet OS 'définit la ligne J (179 si la cellule B179 est vide, sinon la première ligne vide (en partant du bas) de la colonne B de l'onglet OD J = IIf(OD.Cells(179, "B").Value = "", 179, OD.Cells(Application.Rows.Count, "B").End(xlUp).Row + 1) For I = 2 To DL 'boucle sur toutes les lignes I de 2 à DL 'si la cellule ligne I colonne B de l'onglet OS est égal à "Bordeaux", revoie dans la cellule 'ligne J colonne B redimensionnée de l'onglet OD la valeur de la plage ligne I colonnes B à T de l'onglet OS If OS.Cells(I, "B").Value = "Bordeaux" Then OD.Cells(J, "B").Resize(1, 19).Value = OS.Range(OS.Cells(I, "B"), OS.Cells(I, "T")).Value J = J + 1 'incrémente J Next I 'prochaine ligne de la boucle End Sub
Wow ! Brillant !!!
Merci beaucoup (pour le code et pour les explications !!)
A tout hasard une astuce pour qu'il n'y ait pas de lignes vides dans la feuille de destination ?
Parce qu'il n'y a pas que des bordeaux sur la feuille d'origine :)
Si non je peux mettre en place un autre code, c'est juste au cas où
Encore merci !!
Merci beaucoup (pour le code et pour les explications !!)
A tout hasard une astuce pour qu'il n'y ait pas de lignes vides dans la feuille de destination ?
Parce qu'il n'y a pas que des bordeaux sur la feuille d'origine :)
Si non je peux mettre en place un autre code, c'est juste au cas où
Encore merci !!
Re,
Il suffit de mettre l'incrémentation de J dans la condition, comme d'ailleurs tu as fait dans ton code original mais je ne m'en étais pas aperçu.
Il suffit de mettre l'incrémentation de J dans la condition, comme d'ailleurs tu as fait dans ton code original mais je ne m'en étais pas aperçu.
If OS.Cells(I, "B").Value = "Bordeaux" Then OD.Cells(J, "B").Resize(1, 19).Value = OS.Range(OS.Cells(I, "B"), OS.Cells(I, "T")).Value J = J + 1 'incrémente J End If