Boucle copier / Coller

Bonjour à tous,

Comme je l'ai mentionné dans le sujet, je recherche à créer une boucle qui copie les données d'une colonne jusqu'à la première cellule vide, dans une autre feuille.

Aussi, j'aimerai copier d'autres colonnes mais en prenant compte de la taille de la première (en nombre de cellule).

A savoir que je ne peux pas prévoir le nombre de cellule qu'il y aura dans la colonne "de base".

Je ne suis pas un expert en VBA mais voici ce que j'ai réalisé pour le moment :

Sub RawToClean()

Dim n As Long, x As Long

n = 5 'Premi?re cellule ? coppier dans l'onglet RAW DATA

x = 7 'Premi?re cellule ? coller dans l'onglet 02. Maerial Data

Do While Worksheets("RAW DATA").Cells(n, 1) = "" 'Continuer jusqu'? trouver une cellule vide dans la colonne FIA

If Worksheets("RAW DATA").Range("A5") <> "" Then 'Si la premi?re cellule contenant une FIA n'est pas vide alors

Cells(n, 1).Select 'Selection de la valeur dans la cellule et copi? sans mise en forme dans la feuille 02. Material Data cellule A7

Selection.Copy

Sheets("02. Material Data").Select

Cells(x, 1).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

x = x + 1

End If

n = n + 1

Loop

End Sub

Merci à vous.

Bonjour..., bonjour le forum,

Peut-être comme ça :

Sub RawToClean()
Dim RD As Worksheet
Dim MD As Worksheet
Dim DL As Long
Dim DEST As Range
Dim I As Long

Set RD = Worksheets("RAW DATA")
Set MD = Worksheets("02. Material Data")
DL = RD.Cells(Application.Rows.Count, "A").End(xlUp).Row
If RD.Range("A5") = "" Then Exit Sub
For I = 5 To DL
    Set DEST = MD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
    RD.Cells(I, "A").Copy
    DEST.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Next I
End Sub

Bonjour frwigz, Salut ThauThème,

@frwigz, quelques commentaires sur ton code :

--> Plutôt que de répéter un nom de feuille sur laquelle tu travailles, tu peux utiliser :

With Sheets("MaFeuille") 'Toute objet commençant par "." se rapporte à cette feuille
   .Cells(n, 1)
   .Range("A1:A100")
   ...
End With

--> Pour déterminer à partir d'un point, la dernière cellule avant une cellule vide, tu peux faire :

.Cells(1, 1).End(xlDown).Row 'Équivalent au n° de ligne obtenu en appuyant sur CTRL + FLECHE DU BAS depuis la cellule A1
'NOTE : cette instruction peux aussi s'écrire de façon à trouver la dernière cellule non vide de ta feuille :
.Cells(.Rows.Count, 1).End(xlUp).Row 

--> Pour copier/coller ou naviguer entre les feuilles, VBA n'a pas besoin (comme le ferait un utilisateur) de "séléctionner" les objets (donc les instructions "Select" sont inutiles) :

.Cells(n, 1).Copy Sheets("02. Material Data").Cells(x, 1)
'Est équivalent à :
Cells(n, 1).Select 
Selection.Copy
Sheets("02. Material Data").Select
Cells(x, 1).Select
ActiveSheet.Paste

--> Si seule la valeur de la cellule t'intéresse, copier est inutile, il sera plus rapide et plus simple de reporter la valeur contenue dans la cellule (PS: ça fonctionne aussi avec une plage et pas uniquement cellule par cellule) :

Sheets("02. Material Data").Cells(x, 1).Value = .Cells(n, 1).Value

Re,

Je rajouterai quand même...

Ben rien ! Pedro à tout dit...

Salut à vous,

Merci pour vos commentaires et aides,

En fait mon objectif est de créer un template car j'ai à répéter cette opération pour le nombre de foursisseur que j'ai, environ 1000.

Et d'automatiser l'opération avec seulement un bouton pousoir (sur le fichier).

Lorsque l'on clique sur ce bouton poussoir, les données de l'onglet 01 de la colonne A à partir de la cellule A5 sont copiés (jusqu'à voir une cellule vide, cela montre qu'il n'y a plus de données après).

Les données copiés sont alors collés dans l'onglet 02 colonne A à partir de la cellule A7.

Ensuite, il faut que pour certaines colonne, comme par exemple la colonne C de l'onglet 01 à partir de la cellule A5 la "même taille de plage" (que copiée auparavant) soit copiée et collée dans l'onglet 02 colonne B à partir de la cellule A7. A savoir qu'à partir d'ici, des cellules peuvent être vide.

J'éspère être clair car je ne suis pas un expert en programmation.

Cordialement.

capture capture capture

Erratum,

Désoler pour les images : les voici en meilleur qualité.

Biensur il faut que la couleur bleu de l'onglet 02 soit respecté.

Cordialement.

capture2 capture

Re,

La dernière fois que je suis tombé en panne avec mon bolide je l'ai pris en photo et j'ai montré la photo à mon garagiste. Je sais pas pourquoi, il a pas pu réparer...

Re,

La dernière fois que je suis tombé en panne avec mon bolide je l'ai pris en photo et j'ai montré la photo à mon garagiste. Je sais pas pourquoi, il a pas pu réparer...

Je sais pourquoi ! Ca se fait au bruit du moteur...

Merci pour votre aide et votre super humour.

Cordialement.

Rechercher des sujets similaires à "boucle copier coller"