cs_niemans
Messages postés8Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention17 mai 2007
-
14 mai 2007 à 21:35
cs_niemans
Messages postés8Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention17 mai 2007
-
15 mai 2007 à 12:52
Bonjour,
je souhaiterais extraire des données à partir d'un gros fichier excel.
Les données sont rangées sur 8 colonnes et sont précédées d'un en-tête qui commence par (Data......
Je voudrais faire une macro du style
positionnement sur la cellule qui contient Data
while cellule suivante != Data
selectionner cellule
des que l'occurence suivante de Data est trouvé:
copier l'ensemble des cellules dans une nouvelle feuille.
A la fin les donnees se retrouvent dans des feuilles différentes.
Comment faire pour parcourir les cellules de droite à gauche et de haut en bas en recherchant la cellule contenant Data?
Je pensait à une boucle while/ wend mais je ne sait pas comment l'écrire.
cs_niemans
Messages postés8Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention17 mai 2007 14 mai 2007 à 23:37
Merci pour votre réponse mais je suis débutant et j'ai un peu de mal à comprendre.Que signifie PLV?C'est la fin du tableau?
En fait le mot recherché se trouve toujours dans la deuxième colonne.
l'en-tête fait 10 colonnes sur 5-6 lignes et commence à la deuxième colonne.
Il est suivi des données sur 8 colonnes et un grand nombre de lignes.
Le fichier est composé de 10 à 12 en-têtes avec les données intercalées entre chaque en-tête.
Si je fait:
For i = 2 To PLV
If Cells(i, 2).Value = "Data" Then
DerColonne = Range("IV" & i).End(xlLeft).Column
For j = 1 To DerColonne
Range(Cells(j, 1), Cells(j, 10)).Copy
Next j
End If
Next i
Je copie de "Data" jusqu'à la fin du fichier?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 14 mai 2007 à 23:49
En fait PLV, c'est une variable (je l'appelle comme ça car j'y met comme abréviation Premiere Ligne Vide, mais en fait, ce serait plutot Derniere Ligne Utilises, mais bon) qui contient une valeur, ça evite de boucler inutilement dans des cellules vides (jusqu'à 65536)
Pour ton truc de copie, dans ce cas, ma boucle sur les colonnes est inutile
For i = 2 To PLV
If Cells(i, 2).Value = "Data" Then
Range(Cells(i, 1), Cells(i, 10)).Copy
Sheets("Ta feuille 2").Range("Destination").Paste
End If
Next i
~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>
Mais ça c'est pour exemple, apparemment, tu cherches 2 fois le mot Data, non ?
Le premier Data, c'est le début de la zone, et le second Data, c'est pour terminer la zone, est-ce bien ça ?
Si oui, après on le copie (la plage trouvée par code) dans A1 d'une autre feuille ?
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 15 mai 2007 à 00:18
Alors essaie avec ce bout de code :
Dim bVerif As Boolean, MyStart As Long
For i = 2 To PLV
If Cells(i, 2).Value = "Data" Then
If bVerif = False Then
MyStart = i
bVerif = True
Else
Exit For
End If
End If
Next i
Range(Cells(MyStart, 1), Cells(i, 10)).Copy
Sheets("Ta feuille 2").Range("Destination").Paste
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
cs_niemans
Messages postés8Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention17 mai 2007 15 mai 2007 à 00:36
Merci beaucoup,
j'essaierai demain car je n'ai pas de fichier sous la main mais ç'est exactement ce que je cherchais à faire.
"Ta feuille 2"c'est le nom de la nouvelle feuille ou sont copiés les data?
cs_niemans
Messages postés8Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention17 mai 2007 15 mai 2007 à 12:52
La macro s'arrête sur la ligne
Range(Cells(MyStart, 1), Cells(i, 10)).Copy
avec le message:
Run-Time error '1004'
Application-defined or object-defined error