Remplacement du dernier caractère dans une chaîne comprenant des chiffres

  • Initiateur de la discussion Initiateur de la discussion Goufra
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Goufra

XLDnaute Occasionnel
Bonsoir à vous,

Je n’arrive pas à trouver mon erreur.

Je devrais obtenir successivement :
A1234-D1 puis A1234-D2 puis A1234-D3 puis A1234-D4 puis A1234-D5

Or j’obtiens
A1234-D1 puis A2234-D2 puis A3334-D3 puis A4444-D4 puis A5555-D5


Code utilisé

Sub test()
Dim Numérotation As Variant, Nu%, x%, Z%

Numérotation = [a2]
Nu = 1
Z = 2

Numérotation = Numérotation & "-" & "D" & Nu

For x = 1 To 5
Numérotation = Replace(Numérotation, Right(Numérotation, 1), Nu)
Range("c" & Z) = Numérotation
Nu = Nu + 1
Z = Z + 1
Next x
End Sub

pièce jointe
D’avance merci à vous
 

Pièces jointes

Re : Remplacement du dernier caractère dans une chaîne comprenant des chiffres

Bonsoir

avant la boucle Numérotation vaut A1234-D1
l'instruction Replace remplace dans une chaine tous les caractères choisis( en l'occurrence la valeur du dernier caractère de Numérotation) par un autre (en l'occurrence le contenu de la variable Nu)

première itération de la boucle, on remplace tous les 1 (dernier caractère de Numérotation) par Nu qui vaut 1 on aura alors :A1234-D1
deuxième itération Nu est passé à 2, donc on remplace tous les 1 par des 2 : on aura alors :A2234-D2
troisième itération Nu est passé à 3, donc on remplace tous les 2 par des 3 : on aura alors :A3334-D3
....


une solution possible :
Code:
Sub test()
 Dim Numérotation As Variant, x%
    Numérotation = [a2]
    Numérotation = Numérotation & "-" & "D"
    For x = 1 To 5
        Range("C" & x + 1) = Numérotation & x
    Next x
End Sub

A+
 
Re : Remplacement du dernier caractère dans une chaîne comprenant des chiffres

Bonsoir à tous

Goufra
Voici deux possibilités, si j'ai bien compris la question.
(la seconde n'utilise pas de boucle et utilise l’auto-incrémentation qu'offre la recopie vers le bas d'Excel, ce qui m’amène à cette question: pourquoi ici utiliser VBA alors qu'on peut faire pareil tout simplement à la souris ?)

Code:
Sub test2()
Dim i
For i = 1 To 5
Cells(2 + i, "C").Value = Range("A2") & "-D" & i
Next
End Sub
Code:
Sub test3()
With Range("C3")
    .Value = [A2] & "-D1"
    .Resize(1).AutoFill Range("C3:C7"), 0
End With
End Sub
 
Re : Remplacement du dernier caractère dans une chaîne comprenant des chiffres

Merci à toi Paf et à toi staple 1600
Je vous ai pris cet exemple pour vous montrer qu’en utilisant « replace » sur une chaine alphanumérique je rencontre un problème.


Je dispose d’une liste de numéro, j’ajoute un numéro à cette liste : A1234 par exemple que je récupère via une textbox dans une cellule d’attente.

Je vérifie s’il est déjà répertorié.
Si c’est le cas je modifie A1234 en ajoutant –D1

Jusqu’à ce point c’est Ok

Je vérifie donc si A1234-D1 figure dans la liste
Si c’est le cas je remplace le dernier caractère (Nu=1)
par Nu=Nu+1.

J’obtiens bien D1 – D2 – D3 …

Mais A1234 est successivement modifié et je ne comprends pas pourquoi.
Si vous pouviez m’éclairer !
Je vous en remercie par avance, je n’ai pas trouvé ce type de manip.


Je peux éventuellement bidouiller A1234 en le remplaçant par une variable pour ensuite récupérer la numérotation.

Dans l’attente
 
Re : Remplacement du dernier caractère dans une chaîne comprenant des chiffres

Pardon Paf
J'ai oublié de joindre mon interrogation à ta réponse qui explique ce qu'il m'arrive.

Mais ce que je ne comprends pas c'est que j'ai désigné la position du caractère à remplacer
en utilisant l'argument Right(Numérotation, 1) dans

erreur de ma part je désigne le sigle à remplacer et non son emplacement ....
Bref j'ai compris !!!!!
Dans l'attente
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour