Copier Coller à la suite
maevaaugereau
-
ThauTheme Messages postés 1564 Statut Membre -
ThauTheme Messages postés 1564 Statut Membre -
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
- Historique copier coller windows - Accueil - Informatique
- Copier coller multiple - Guide
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