Copier/Coller ligne de la feuille1 sur ligne vide feuille2

Bonjour à tous,

Je suis un débutant en VBA.

Je travail sous Excel VBA 2003

J'écris des données sur la 2ème ligne de la feuille1, plus précisément de A1 à G1

Ensuite je veux copier la ligne A1, G1 et la coller dans la 1er ligne vide de la feuille2

Sachant que ma feui2 est une base de donnée que j'alimente, la 1er ligne vide change à chaque fois.

Mon code qui ne [b]fonctionne pas :

'je vais copier la ligne 2 de la feuille1

Sheets("feuil1").Select

Rows("2:2").Select

Selection.Copy

'je vais aller lire la 1er ligne vide la feuille2

Sheets("Feuil2").Select

DernLigne = Range("A" & Rows.Count).End(xlUp).Row + 1

'je colle la ligne 2 dans la feuille "tableau de charge sur la 1er ligne vide

Sheets("feuil1").Select

Sheets("feuil2").Paste

'Je suprime la ligne de la feuille 1

Sheets("feuil1").Select

Rows("2:2").Delete

D'avance, merci pour votre aide.

Samm

Salut et bienvenue sur le Forum,

samm a écrit :

J'écris des données sur la 2ème ligne de la feuille1, plus précisément de A1 à G1

Les cellules A1:G1 font partie de la première ligne

Voici un code qui remplacerait l'entièreté du tien, considérant que tu es sur la Feuil1 lorsque tu le lances :

Range("A1:G1").Cut Destination:=Sheets("Feuil2").Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1)

A modifier selon l'emplacement exact de tes cellules à couper.

Cordialement.

Merci beaucoup Yvouille.

Ton code marche à la perfection. Merci d'avoir répondu aussi vite.

Désole pour le A1:G1 je voulais écrire A2:G2 (j'ai pas fait gafe)

Est-ce que je peux comparer la ligne 2 (A2:G2) de la feuille 1 avec les lignes qui sont déjà dans la feuille 2 (base de données) juste avant de couper ?

En gros je voudrais savoir si les données qui sont dans la ligne 2 feuille 1 existe deja dans la feuille 2

s'il exite déja je fait rien sinon je rajoute dans la feuille 2

est-ce que c'est possible et si c'est le cas quelle fonction je devrais utiliser.

Merci

En fait mon premier code contient une erreur. Il aurait fallu écrire :

Range("A1:G1").Cut Destination:=Sheets("Feuil2").Range("A" & Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row + 1)

Mais ce code .Cut présente l'inconvénient que des cellules sont supprimée.

Afin de répondre à ta nouvelle demande, je te propose un code assez différent :

Sub aa()
Dim i As Integer

With Sheets("Feuil2")
    For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
        If Range("A2") = .Cells(i, 1) And Range("B2") = .Cells(i, 2) And Range("C2") = .Cells(i, 3) And Range("D2") = .Cells(i, 4) And Range("E2") = .Cells(i, 5) And Range("F2") = .Cells(i, 6) And Range("G2") = .Cells(i, 7) Then
            MsgBox ("Ces données ont déjà été reportées sur la feuille 2")
            Exit Sub
        End If
    Next i

    Range("A2:G2").Copy Destination:=.Range("A" & .Range("A" & Rows.Count).End(xlUp).Row + 1)
    Range("A2:G2").ClearContents

End With
End Sub

Amicalement

796sam-v1.zip (12.51 Ko)

Merci Yvouille,

Ta macros fonctionne nikel. Mais j'ai pas compris la ligne de code c-dessous ?

For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row

est-ce que tu pourrais m'expliquer surtout la partie en gras ?

que veut dire &Rows.Count ????

End(xlUp).Row : est ce que cette partie permet de connaitre la derniere ligne non vide ?

Merci beaucoup Yvouille, je galere sur mon programme depuis 3 jours et grace à toi j'avance là.

Je ne suis pas très doué pour expliquer

Row.count compte le nombre de lignes d'un fichier (65536 ou 1048576 selon les versions Excel).

L'aide Excel pour End indique : "Cette propriété renvoie un objet Range qui représente la cellule à la fin de la zone qui contient la plage source". Combiné avec (xlup), ça t'indique la dernière ligne remplie en effectuant le contrôle depuis le bas (donc pour la première ligne vide tu dois indiquer + 1, avec des complication si aucune ligne n'est remplie ).

Tu pourrais aussi mentionner toi-même la ligne depuis laquelle tu "remontes", par exemple Range("A65000").End(xlup) si tu es certains qu'il ne peut pas y avoir plus de 65000 lignes remplies.

Cordialement.

Tes explications sont très claire.

J'ai très bien compris.

Merci pour ton aide si je peux faire quoi que se soit pour toi n'héiste pas à demander

Amicalement,

Samm

Rechercher des sujets similaires à "copier coller ligne feuille1 vide feuille2"