XL 2010 VBA : Aide sur Comportement d'une boucle

Phillip

XLDnaute Occasionnel
Bonjour,

Voir fichier exemple. J'ai des codes produits (ici 1111, 22222, etc...) en colonne 1, et des références en colonne 2. Je voudrais différencier chaque code produit mais sans trop le changer. J'ai décidé de rajouter des points derrière ce code en fonction de l'occurence. Si j'ai une fois le code, je rajoute un point, deux fois, je rajoute 2 points, etc...

Je n'ai pas encore travaillé sur le moment où je change de référence, mais déjà, je ne comprends pas pourquoi ma macro ne marche pas. Elle met bien 2 points à la 2° occurence, 3 points à la 3°, mais elle "saute" la première occurence de mon premire code produit ( 1111) , et la dernière, pas la première occurence de mon deuxième code ( 222222) mais la dernière occurence de mon 2° code produit, etc... !

Je m'arrache les quelques cheveux qui me restent.

En pièce attachée, j'ai un feuillet début, et le feuillet résultat obtenu avec ma macro....

Merci de votre aide sur ce mystère de "saut" d'occurences !

Cordialement

Phillip
 

Pièces jointes

  • essaimacrocaracteresdisctets.xlsm
    20.6 KB · Affichages: 54

vgendron

XLDnaute Barbatruc
Hello
Code:
mais elle "saute" la première occurence de mon premire code produit ( 1111)

en fait non. elle le fait bien. sauf que tes références sont en format standard ..
et donc 1111, est un nombre..
et un nombre avec un point à la fin, c'est comme si tu écrivais 1111.0
et excel "simplifie' en laissant juste le nombre..
quand tu mets deux points. Excel ne voit plus un nombre, mais un texte. donc. laisse les deux points.

avant de lancer ta macro, passe la colonne A en format texte.
 

vgendron

XLDnaute Barbatruc
et pour ton pb de changement de réf
Code:
Sub RajouterCaracteresDiscrets()

Dim VDernLigne As Long 'stockera le numero de la dernière ligne utilisée
Dim Vligne As Long 'la ligne testée
Dim VPremLigne As Long
Dim VcompteurOccurence As Long
Dim VChaine As Variant
Dim VCelluleActive As Variant

VDernLigne = Cells(1, 1).SpecialCells(xlCellTypeLastCell).Row
VPremLigne = ActiveSheet.UsedRange.Cells(1).Row

'Tester successivement chaque ligne entre la ligne 1 et la derniere

VcompteurOccurence = 1

For Vligne = VPremLigne To VDernLigne
    If Cells(Vligne, 1) = Cells(Vligne + 1, 1) Then
        VChaine = String(VcompteurOccurence, ".")
        Cells(Vligne, 1) = Cells(Vligne, 1) & VChaine
        VcompteurOccurence = VcompteurOccurence + 1
    Else
        VChaine = String(VcompteurOccurence + 1, ".")
        Cells(Vligne, 1) = Cells(Vligne, 1) & VChaine
        VcompteurOccurence = 1
    End If
Next Vligne
   
End Sub
 

Discussions similaires

Réponses
9
Affichages
522
Réponses
21
Affichages
518

Membres actuellement en ligne

Statistiques des forums

Discussions
313 020
Messages
2 094 433
Membres
106 024
dernier inscrit
Imado