Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Incrémenter du texte en VBA jusqu'au suivant

2 réponses
Avatar
géjoun
[Oupsss, j'annule et recommence mon envoi, j'ai remarqué que ma date était
mal réglée sur le précédent...]

Bonsoir,

Je cherche à créer une macro en VBA pour incrémenter du texte dans une plage
définie A1:B9000.
J'ai un tableau de 2 colonnes, et dans les colonnes A et B, je voudrais
qu'une macro m'incrémente le texte trouvé en 1er jusqu'au suivant.

Par ex, j'ai "01" en A1, puis jusqu'à A160, je n'ai plus rien, et en A161,
j'ai "02"; donc je cherche à avoir une macro qui m'incrémente "01" jusqu'en
A160, puis à partir de A161, ça m'incrémente "02" jusqu'à trouvé une autre
valeur, et à ce moment là, ça stoppe l'incrémentation de "02", puis commence
l'incrémentation de la nouvelle valeur.
Et pareil pour la colonne B; en B1, j'ai "DIVERS", et aprés, je n'ai plus
rien jusqu'à la cellule B26 où j'ai "AUTRES"; dans ce cas, la macro
m'incrémente "DIVERS" jusqu'en B25, puis commence l'incrémentation de
"AUTRES" jusqu'à butter sur une nouvelle donnée; et ce jusqu'à la fin de la
plage définie (A1:B9000).

J'ai essayé de faire quelque chose avec l'enregistreur de maco, mais je
n'arrive pas à définir la condition 'si il y a une nouvelle valeur, alors
incrémenter la nouvelle'.

Merci d'avance!

--
géjoun
dam-mail2006@ifrance.com
/Enlever l'année pour répondre.../

2 réponses

Avatar
poy-poy
Bonjour,

Tu fais une boucle pour aller jusqu'à la ligne 9000. Puis tu séléctionnes la
plage qu'il te faut avec un end(xldown) en utilisant l'incrementeur i pour
être au bon endroit. Enfin, tu donnes à i sa valeur suivante.

Cordialement
Poy-Poy

Sub essai()

For i = 1 To 9000
Range(Range("A" & i), Cells(Range("A" & i).End(xlDown).Row - 1, 1)) =
Range("A" & i).Value
i = Range("A" & i).End(xlDown).Row - 1
Next
For i = 1 To 9000
Range(Range("B" & i), Cells(Range("B" & i).End(xlDown).Row - 1, 1)) =
Range("B" & i).Value
i = Range("B" & i).End(xlDown).Row - 1
Next

End Sub

"géjoun" wrote:

[Oupsss, j'annule et recommence mon envoi, j'ai remarqué que ma date était
mal réglée sur le précédent...]

Bonsoir,

Je cherche à créer une macro en VBA pour incrémenter du texte dans une plage
définie A1:B9000.
J'ai un tableau de 2 colonnes, et dans les colonnes A et B, je voudrais
qu'une macro m'incrémente le texte trouvé en 1er jusqu'au suivant.

Par ex, j'ai "01" en A1, puis jusqu'à A160, je n'ai plus rien, et en A161,
j'ai "02"; donc je cherche à avoir une macro qui m'incrémente "01" jusqu'en
A160, puis à partir de A161, ça m'incrémente "02" jusqu'à trouvé une autre
valeur, et à ce moment là, ça stoppe l'incrémentation de "02", puis commence
l'incrémentation de la nouvelle valeur.
Et pareil pour la colonne B; en B1, j'ai "DIVERS", et aprés, je n'ai plus
rien jusqu'à la cellule B26 où j'ai "AUTRES"; dans ce cas, la macro
m'incrémente "DIVERS" jusqu'en B25, puis commence l'incrémentation de
"AUTRES" jusqu'à butter sur une nouvelle donnée; et ce jusqu'à la fin de la
plage définie (A1:B9000).

J'ai essayé de faire quelque chose avec l'enregistreur de maco, mais je
n'arrive pas à définir la condition 'si il y a une nouvelle valeur, alors
incrémenter la nouvelle'.

Merci d'avance!

--
géjoun

/Enlever l'année pour répondre.../




Avatar
géjoun
poy-poy nous expliquait:

Bonjour,

Je viens d'essayer le code que tu me fournis en faisant un pas à pas
détaillé pour comprendre le principe, mais est-ce qu'il ne manque pas un
petit quelque chose pour stopper la boucle aprés la colonne A et repartir
sur la colonne B?
Car, ça me reporte bien les valeurs correctement tel que je le souhaite,
mais ça m'incrémente jusqu'à l'avant dernière ligne du tableau (65535) la
dernière valeur trouvée, à la place de se stopper à la ligne 9000; et en
plus, lorsque la boucle passe à la colonne B, ça m'incrémente seulement la
1ère valeur trouvée en B sans tenir compte des autres présentes dans la
colonne, mais en plus, ça me reporte cette même valeur sur la colonne A,
écrasant ce qu'avait fait la 1ère boucle correctement.

Est-ce normal, ou il faut adapter quelque chose dans la macro avant de s'en
servir telle quelle?

Merci!

--
géjoun

/Enlever l'année pour répondre.../



Bonjour,

Tu fais une boucle pour aller jusqu'à la ligne 9000. Puis tu
séléctionnes la plage qu'il te faut avec un end(xldown) en utilisant
l'incrementeur i pour être au bon endroit. Enfin, tu donnes à i sa
valeur suivante.

Cordialement
Poy-Poy

Sub essai()

For i = 1 To 9000
Range(Range("A" & i), Cells(Range("A" & i).End(xlDown).Row - 1,
1)) = Range("A" & i).Value
i = Range("A" & i).End(xlDown).Row - 1
Next
For i = 1 To 9000
Range(Range("B" & i), Cells(Range("B" & i).End(xlDown).Row - 1,
1)) = Range("B" & i).Value
i = Range("B" & i).End(xlDown).Row - 1
Next

End Sub