Ne copier et coller que certaines lignes d'une feuille excel

Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005 - 20 mai 2005 à 09:42
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005 - 23 mai 2005 à 12:42
bonjour à tous!

j'ai une feuille excel avec des infos. parmi ces infos je dois sélectionner que certaines lignes. une fois ces infos sélectionnées, je dois les coller sur une autre feuille. j'ai essayé le code suivant (c'est un exemple parce que le nombre de lignes à coller est variable):

Sheets("2004").Range("3:3").Select
Selection.Copy
Sheets("Search results").Select
ActiveSheet.Paste
Sheets("2004").Range("2:2").Select
Selection.Copy
Sheets("Search results").Select
ActiveSheet.Paste

mais pour la ligne "Sheets("2004").Range("2:2").Select", la compil me dit: 'la méthode select de la classe range a échoué.'

pourquoi?

une autre solution serait de créer un tableau 16 colonnes (parce que 16 types d'infos à stocker) et n lignes (tabl dynamique pour les lignes) dans VB et coller ensuite le tableau en une seule fois... le problème c'est que je sais créer un tab dynamique à une dimension, mais pour les tableaux où les colonnes sont fixes et les lignes dynamiques, je ne sais pas... puis après faut le redimensionner etc, et pour ce genre de tableau, je sais pas faire...

merci beaucoup de votre aide.

Daydayerement Vôtre

3 réponses

galopin01 Messages postés 133 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 14 octobre 2011 1
20 mai 2005 à 20:26
Euh, c'est assez approximatif…
En principe on n'utilise pas Range("3:3") mais Range("A3:C3") par exemple
Bon on arrive des fois à sélectionner une ligne comme tu fais mais ça c'est la première fois seulement. Une fois que tu as mis Excel de mauvaise humeur il renacle...
Et puis...
Comme tu voudrais faire tu vas toujour tout coller au même endroit sur ta feuille cible.
la bonne solution c'est quelque chose comme ça qui augmente la ligne cible à chaque collage :
YAPUKA imbriquer la condition qui permet de choisir les lignes qui t'intéressent...


La macro suivante copie les lignes 1 à 10 de la Feuille 1 dans la feuille 2 (à partir de la ligne 8)


Sub Test()
k = 8
For i = 1 To 10
Feuil1.Range("A" & i & ":H" & i).Copy Feuil2.Range("A" & k)
k = k + 1
Next
End Sub


A+
0
nawakator Messages postés 51 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 8 février 2011
20 mai 2005 à 20:31
Essaye u n truc comme çà

-- déclaration
public strData() As String
public Col As Integer
public Ligne As Integer

-- Initialisation
Col = 16
Ligne = 60

-- Dans un fonction
ReDim Preserve strData(Col, Ligne)

Ligne peute changer sans problème

Pour que Redim marche tu doit déclarer un tableau sans dimension présice. L'instruction Preserve permet de garder les données précédentes si Ligne devient plus grand.

Sinon pour ton erreur essaye ??

Worksheets("2004").Activate
Sheets("2004").Range("3:3").Select
Selection.Copy
Worksheets("Search results").Activate
Sheets("Search results").Select
ActiveSheet.Paste
Worksheets("2004").Activate
Sheets("2004").Range("2:2").Select
Selection.Copy
Worksheets("Search results").Activate
Sheets("Search results").Select
ActiveSheet.Paste

Bye
0
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005
23 mai 2005 à 12:42
merci de vos reponses, je vais tenter de voir si je peu fer qqch....

Daydayerement Vôtre
0
Rejoignez-nous