Vba recopier une plage dont nombre de ligne est indéterminé.

gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014 - 22 sept. 2010 à 22:34
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014 - 25 sept. 2010 à 14:10
Voilà mon code:
Worksheets("Engagés").Range("M1:O" & Cells(Rows.Count, "C").End(xlUp).Row).Copy _
Worksheets("Hommes").Range("A1")

Je veux recopier de la feuille "Engagés" une plage de cellule située entre "M1:O" dont le nombre de lignes est indéterminé, dans une feuille du même classeur "Hommes" à partir de la cellule "A1".
Les cellules de la plage"Engagés" comportent des formules et je ne veux recopier que les valeurs.
Pour le moment avec mon code, je ne recopie que la première ligne avec des #REF.
Encore débutant, bien que retraité enragé de l'info, je m'améliore et compte sur votre aide.
Merci

5 réponses

nyko283 Messages postés 27 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 16 février 2011 1
23 sept. 2010 à 20:27
Bonjour,

ce que tu essai de faire est un collage spécial
qui ne prendrais que les valeurs et non les formules d'un collage normale,

alors essai ceci :
Dim x As Integer
x = Range("O65536").End(xlUp).Row ' recherche de la derniere ligne vide sur la colonne "O"
Worksheets("Engagés").Range("M1:O" & x).Copy
Worksheets("Hommes").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Worksheets("Hommes").Range("A1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False



ceci devrai faire ton bonheur
0
nyko283 Messages postés 27 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 16 février 2011 1
23 sept. 2010 à 20:31
ah j'oubliais le deuxieme collage special
c'est ci tu veux également copier le format de la cellule de depart.

et si tu veux copier les valeurs ainsi que le format des nombres remplace "xlPasteValues" par "xlPasteValuesAndNumberFormats" dans le premier collage special.

voila
0
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014
23 sept. 2010 à 22:36
Je te remercie de ta réponse : Voilà le code que j'ai recopié:
Dim x As Integer
x = Range("O65336").End(xlUp).Row
Worksheets("Engagés").Range("M1:O" & x).Copy
Worksheets("Hommes").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Malheureusement je ne récupère que la première ligne de ma plage qui devrait en contenir en l'occurence 30.
Ai je mal recopié ton code ou....
Merci de ta réponse car je suis bien près du but de mon bonheur !!.
0
nyko283 Messages postés 27 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 16 février 2011 1
24 sept. 2010 à 19:26
Bonjour,
ou.... je me suis un peu précipité.

Alors remplace cette ligne de code :
x = Range("O65336").End(xlUp).Row 

par :

x = Worksheets("Engagés").Range("O65536").End(xlUp).Row ' recherche de la derniere ligne vide sur la colonne "O"sur la feuille "Engagés"

j'avais omis de mettre la reference à la feuille que tu te sers pour prendre les données, donc si c'était ta feuille "Homme" qui était active, la définition du nombre de ligne ne pouvait etre correct.

Nicolas
Développeur en herbes
mais l'herbe pousse tranquilement
0

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

Posez votre question
gerardmireille Messages postés 29 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 15 mars 2014
25 sept. 2010 à 14:10
Merci Nyko ça marche impec.

Gérard développeur âgé mais persévérant.
0
Rejoignez-nous