Copie d'une liste

Résolu
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 - 2 mai 2010 à 12:34
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 2 mai 2010 à 21:00
Bonjour
Je travaille sur excel 2007. J'aimerais copier une liste qui n'est jamais de meme longueur. Elle peux aller sur deux lignes jusqu'a 20 lignes. Je ne sais pas comment ecrire copie la liste du debut jusqu'a la derniere ligne non vide. Si quelqu'un a la solution, je suis preneur, merci a vous.

16 réponses

chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
2 mai 2010 à 20:45
excuse moi encore, mais peux tu me dire comment je fais pour signaler que la reponse est exacte sur le forum de facon a clore. merci encore
christian
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 mai 2010 à 13:05
Bonjour,

Une liste dans des cellules ?
Dim lRangeSrc as Range
Dim lRangeDst as range

Set lRangeSrc=Range("A1")
Set lRangeDst=Range("A1")

Do Until IsEmpty(lRangeSrv.value)
    lRangeDst.value=lRangeSrv.value
    Set lRangeSrc=lRangeSrc.Offset(1,0)
    Set lRangeDst=lRangeDst.Offset(1,0)
Loop


Code non testé, à vérifier.

ça te convient ?

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
2 mai 2010 à 15:32
Bonjour et merci pour ta reponse. Je ne comprends pas tout le code. J'ai fait un essai et le code ce bloque a

Do Until IsEmpty(lRangeSrv.valeur)

peux tu me donner un petit exemple.
merci
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 mai 2010 à 15:45
Bonjour,

quelle erreur ?
ça ne fais pas ce que tu veux ?

Mon site
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
2 mai 2010 à 16:24
pour mieux exprimer ce que je souhaiterais, voici un exemple de liste. Qui peux soit aller de article 1 a 4 ou le fois d'apres aller de 1 a 13. Je souhaiterais quand il y a 3 article que je puisse copier ces 3 articles et les mettre dans une autre feuille, et lorsqu'il y en a plus que je puisse copier la liste complete. Je souhaiterai avoir une code ou une macro qui recherche dans la liste le dernier article, que la recherche s'arrette quand la ligne est vide. J'espere que je me fait mieux comprendre.

article1
article2
article3
article4
article5
article6
article7
article8
article9
article10
article11
article12
article13

merci pour le temps que tu passe a me repondre.
christian
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 mai 2010 à 16:37
Bonjour,

Donc chercher la première ligne libre et ensuite, mettre à la suite les données copiées ?

Dim lRangeSrc as Range
Dim lRangeDst as range

Set lRangeSrc=sheets("FeuilleSource").Range("A1")
Set lRangeDst=sheets("FeuilleDestination")Range("A1")

Do Until IsEmpty(lRangeDst.value)
    Set lRangeDst=lRangeDst.Offset(1,0)
Loop

Do Until IsEmpty(lRangeSrv.value)
    lRangeDst.value=lRangeSrv.value
    Set lRangeSrc=lRangeSrc.Offset(1,0)
    Set lRangeDst=lRangeDst.Offset(1,0)
Loop


Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
2 mai 2010 à 16:48
quand je lance la macro , elle s'arrete apres loop.
sur la ligne do until isempty....
vois tu pourquoi

Sub Macro1()
'
' Macro1 Macro

Dim lRangeSrc As Range
Dim lRangeDst As Range

Set lRangeSrc = Sheets("Feuil1").Range("A1")
Set lRangeDst = Sheets("Feuil2").Range("A1")

Do Until IsEmpty(lRangeDst.Value)
Set lRangeDst = lRangeDst.Offset(1, 0)
Loop

Do Until IsEmpty(lRangeSrv.Value)
lRangeDst.Value = lRangeSrv.Value
Set lRangeSrc = lRangeSrc.Offset(1, 0)
Set lRangeDst = lRangeDst.Offset(1, 0)
Loop
End Sub
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 mai 2010 à 16:53
Bonjour,

Tu as un message d'erreur ?

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
2 mai 2010 à 16:58
excuse moi j'avais pas compris avant.
erreur d'execution 424
objet requis
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 mai 2010 à 18:00
Bonjour,

De base, mets toujours :
Option Explicit
en haut de tes modules de code.
tu aurais eu une erreur indiquant une varibable non définie.

    Dim lRangeSrc As Range
    Dim lRangeDst As Range
    
    Set lRangeSrc = Sheets("Feuil1").Range("A1")
    Set lRangeDst = Sheets("Feuil2").Range("A1")
    
    Do Until IsEmpty(lRangeDst.Value)
        Set lRangeDst = lRangeDst.Offset(1, 0)
    Loop
    
    Do Until IsEmpty(lRangeSrc.Value)
        lRangeDst.Value = lRangeSrc.Value
        Set lRangeSrc = lRangeSrc.Offset(1, 0)
        Set lRangeDst = lRangeDst.Offset(1, 0)
    Loop



Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
2 mai 2010 à 18:10
je viens de faire ce que tu me dis, j'ai lancer la macro et j'ai bien une erreur indiquant une variable non définie.
que faire
merci de ta patience
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 mai 2010 à 18:50
Bonjour,

Tu as recopier le code que j'ai posté en dernier ?
Je l'ai testé.

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
2 mai 2010 à 19:03
oui je l'es copie en debut de code et m'as donne, message variable non definie. peux tu me faire un petit fichier excel sur lequel il y aurait quelques lignes, et me mettre le code dans un module, je verrais si cela marche.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 mai 2010 à 19:35
Je parlais de ce code :
    Dim lRangeSrc As Range
    Dim lRangeDst As Range
    
    Set lRangeSrc = Sheets("Feuil1").Range("A1")
    Set lRangeDst = Sheets("Feuil2").Range("A1")
    
    Do Until IsEmpty(lRangeDst.Value)
        Set lRangeDst = lRangeDst.Offset(1, 0)
    Loop
    
    Do Until IsEmpty(lRangeSrc.Value)
        lRangeDst.Value = lRangeSrc.Value
        Set lRangeSrc = lRangeSrc.Offset(1, 0)
        Set lRangeDst = lRangeDst.Offset(1, 0)
    Loop


Il fonctionne chez moi.

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
2 mai 2010 à 20:42
super ca fonctionne. je suis desole il devais marche des que tu me l'as donne. Cela est tellement rapide que je n'avais pas regarder la feuille 2.
merci a toi pour ce code que va me rendre bien service.
a plus
christian
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 mai 2010 à 21:00
Bonjour,

A coté des réponses, tu as un bouton à cliquer pour dire que la "réponse acceptée".

Mon site
0
Rejoignez-nous