Compter automatiquement des "paquets" de lignes
Bonjour à tous,
j'ai l'habitude de toujours me décarcasser pour résoudre mes soucis Excel tout seul (et à vrai dire j'aime bien çà) mais là je suis sur un os, je viens donc quémander votre aide !
En fait, ce sont des coordonnées X,Y (décimales avec un point, à l'anglaise).
Ces coordonnées sont par paquets, de taille aléatoire (parfois il n'y a que 5 ou 6 lignes, parfois 200).
Ces paquets sont très nombreux (+ de 2000) et sont séparés par des zones vides de taille variable (parfois un seul retour à la ligne, parfois beaucoup plus comme dans l'image).
J'ai besoin d'écrire, de façon automatique (car avec + de 2000paquets je ne peux pas le faire manuellement), au sommet de chaque paquet, la chose suivante : "Nombre de lignes du paquet, 1".
Voici un exemple du fichier que je cherche à obtenir:
4,1
X1.xxxxxx,Y1.yyyyyyy
X2.xxxxxx,Y2.yyyyyyy
X3.xxxxxx,Y3.yyyyyyy
X4.xxxxxx,Y4.yyyyyyy
2,1
X5.xxxxxx,Y5.yyyyyy
X6.xxxxxx,Y6.yyyyyy
3,1
X7.xxxxxx,Y7.yyyyyy
X8.xxxxxx,Y8.yyyyyy
X9.xxxxxx,Y9.yyyyyy
Il faudrait donc pouvoir, dans excel, rechercher chaque cellule précédent chaque paquet (déjà je bute là dessus) ; ensuite mettre dans cette cellule une formule qui calcule le nombre de lignes jusqu'à la prochaine ligne vide, et qui affiche ce nombre avec un ",1" à la suite (bon ça à la limite il suffit de rajouter +0.1 au chiffre et ça marche).
Je me suis creusé la tête mais je n'ai pas trouvé. Pensez-vous que ce soit possible avec excel ?
J'ai mis 5 jours de travail non stop pour acquérir ces chiffres, et ce foutu logiciel (Surfer 9.0) à besoin de ces entêtes de paquets pour lire les données.... j'espère que je vais y arriver sinon j'aurai méchamment les nerfs....
Un grand merci d'avance pour votre aide, c'est chouette d'avoir créé un forum pour aider les gens comme ça !
Sylvain.
Bonjour,
j'ai considéré que tes données étaient en colonne A et que la ligne1 était vide
essaies cette tite macro
Sub compter_paquets()
Dim derlig As Long, lig_fin As Long, lig As Long
derlig = Range("A65536").End(xlUp).Row
lig_fin = 1
Application.ScreenUpdating = False
While lig_fin < derlig
lig = Columns(1).Find("*", Cells(lig_fin, 1), xlValues).Row
lig_fin = Columns(1).Find("", Cells(lig, 1), xlValues).Row
Cells(lig - 1, 1) = lig_fin - lig +0.1
Wend
End Subedit: j'avais oublié le +0,1 !
Bonjour
Je suis ce qu'on appelle une "bille" en VBA, donc ne cherche pas le Code VBA.
Je sais que certains pensent que ce Code est d'un autre temps, mais, si cela peut te dépanner.
C'est une XL4 qui inspirera probablement les "VBAistes" pour te trouver la solution.
ton énoncé n'est pas extrémement clair concernant les transformation, donc j'ai interprété ton X1.xxxxxx,Y1.yyyyyyy
X2.xxxxxx,Y2.yyyyyyy
avec un X1.x.xxxxxx,Y1.y.yyyyy
Mais cela peut se modifier. Je finaliserai la Macro si besoin, dans la mesure ou la solution VBA n'est pas arrivée et ou tu es intéressé.
Suuuuupppeeeeeeeeerrrr !!!
La première macro de michel_m marche parfaitement !! Exactement ce que je voulais !!
Je testerai ta solution Amadéus, mais plus tard car là j'ai du travail sur mes précieuses données enfin exploitables !!!
Un grand merci à vous 2 !!