Bonjour,
Besoin d'aide... Sur une colonne A, j'ai une suite de numeros croissants relativement longue, et souhaite les mettre sous la forme de séries N°128 à 145....
Colonne A Colonne B
124 124 à 128
125 254 à 257
126 ...etc
127
128
254
255
256
257
....etc
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 28 mars 2013 à 21:05
premièrement, déclare I et Fin As Long parce que ça peut dépasser la capacité d'un Integer
Ensuite
For i = i + 1 To fin
devrait être
For i = 1 To fin
x = ("A" & NumLigne)
devrait être écrit
x = Range("A" & NumLigne)
même chose pour les autres
et tout ça devrait être à l'intérieur de ta boucle, sinon NumLigne = 0 et ça va causer une erreur (Ligne 0 n'existe pas)
Et n'utilise pas Copy si tu ne le Paste pas...
Affecte plutôt le résultat à une variable
If Range("A" & I + 1) <> Range("A" & I) + 1 Then
'La valeur suivante n'est pas supérieure de 1, donc une nouvelle série
ValeurFinSérie = Range("A" & I)
'Gère ta série
ValeurDébutSérie = Range("A" & I + 1)
Ça te donne un début...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 29 mars 2013 à 00:33
L'important c'est que tu comprennes ce que tu fais (écris)
Dans le code du dernier message
Range("b1").Select en début ne sert à rien
Pas plus que n'importe lequel Select (ou presque...)
Comme tu sais où commence ta série - ligne 1 (ou 2 s'il y a des entêtes)
tu peux commencer ta procédure en disant que
ValeurDébutSérie = Range("A2") si la série commence sur la ligne 2
Ensuite, tu commences ta boucle
Ligne = 1 'début pour inscrire les séries
For i = 1 To fin
If Range("A" & i + 1) <> Range("A" & i) + 1 Then
'on vient de trouver la fin de la série
ValeurFinSérie = Range("A" & i)
'alors on l'inscrit sur la ligne "Ligne"
Range("B" & Ligne) = ValeurDébutSérie & " à " & ValeurFinSérie
Ligne = Ligne + 1 'pour la prochaine entrée
ValeurDébutSérie = Range("A" & i + 1)
..................
Tu as pas mal tout ce que tu as besoin maintenant...
Mets-y un peu de graisse de neurones pour la suite
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
1 )Tu prends le premier numéro
2 )Tu testes si le suivant est = au précédent + 1
3 )si oui tu retournes au test au dessus
4 )si non ta série est : premier numéro et avant-dernier numéro testé
5 )tu prends le dernier numéro et tu refais le test 2
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
bonsoir
tu aurais du poster dans Visual Basic - Langages dérivés - VBA
tu programmes sous Excel
je programme sous VB Net et non VBA ! mais mon raisonnement est indépendant du langage !
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 28 mars 2013 à 21:44
Bonjour,
je n'ai personnellement rien compris aux aboutissants !
J'attendrai donc deux choses :
1) et principalement : le déplacement de cette discussion
et (mais uniquement ensuite)
2) un exposé clair et très précis des aboutissants.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.