automatisation

  • Initiateur de la discussion emilie
  • Date de début
E

emilie

Guest
bonjour,

je cherche a automatiser l'ajout d'un code de type 3chiffre à un code déjà composé de plusieurs chiffres, mais parfois identique (code de localisation ne devant pas etre modifié).
il faut donc que je trouve comment ajouter ces trois chiffres pour chacun des codes qui se repetent.

je ne sais pas si je suis bien clair, :eek: donc n'hésitez pas à demander des précisions...

merci d'avance pour toute reponse qui pourrait me permettre d'entrevoir une solution!!!! ;)
 

ERIC S

XLDnaute Barbatruc
re

pas optimisé mais devrait marcher

tu ajoutes une colonne en A
tu 'numérotes' tes lignes pour pouvoir remettre dans l'ordre à la fin (1 en A2, ....)
tu tries ton tableau selon code localisation et colonne A
en F2 de ton exemple j'ai mis :
=SI(C1=C2;F1+1;1) et tiré vers le bas
en G2
=C2 & REPT(0;3-NBCAR(F2))&F2 et tiré vers le bas
normalement en G tu as ton code
tu sélectionnes la colonne
copier collage spécial valeurs
tu retries selon colonne A
tu supprimes les colonnes inutiles

A+
 

Hervé

XLDnaute Barbatruc
bonjour emilie, eric :)

une proposition en piece jointe.

salut

ps : les codes peuvent ne pas être triés. [file name=exemplecode3_20060425163906.zip size=10490]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/exemplecode3_20060425163906.zip[/file]

EDITION : en regardant la proposition d'eric,je me rend compte que je ne me suis pas servis de la colonne D, aurais-je dû ?

Message édité par: hervé, à: 25/04/2006 16:49
 

Pièces jointes

  • exemplecode3_20060425163906.zip
    10.2 KB · Affichages: 6
E

emilie

Guest
non, la colonne D était le résultat a atteindre. mais peut etre voulais-tu dire la C, mais c'est pareil, si on peut eviter de la créer c'est mieux.

je crois que la solution de la macro est la plus efficace, mais merci à tous les deux. vous avez été super! B)

par contre, je veux bien que tu m'explique un peu ce que veut dire tout ce code si tu as un peu de temps. histoire que je comprenne un peu mieux!!!!
disons que je connait que les bases des bases du VBA! :p
 

Hervé

XLDnaute Barbatruc
re emilie, eric

le principe est simple, on crée un tableau en mémoire avec dans la premiere colonne chaque code sans doublons et dans la colonne 2 un chiffre.

cette 2ème colonne sert à stocker le chiffre à concatener.

puis on compare chaque ligne avec le tableau, si le code est dans le tableau, alors on renvoi le code (colonne 1)+ le chiffre(colonne2) et on incrémente le chiffre.

on peut donc se passer de la colonne C :


Sub Bouton1_QuandClic()
Dim data As New Collection
Dim tablo()
Dim i As Integer
Dim c As Range

'crée une collection sans doublons des codes de la colonne B
For Each c In Range('b2:b' & Range('b65536').End(xlUp).Row)
       
On Error Resume Next
                data.Add c,
CStr(c)
       
On Error GoTo 0
Next c

ReDim tablo(1 To data.Count, 1 To 2)

'renvoi la collection dans un tableau à 2 dimensions
'colonne1 = le code
'colonne2=un chiffre d'incrémentation
For i = 1 To data.Count
        tablo(i, 1) = data(i)
        tablo(i, 2) = 1
Next i

'compare chaque ligne de la colonne B avec le tableau
'si le code est trouvé dans le tableau, renvoi en colonne D, le code
'et le numéro de la 2ème colonne du tableau.
'puis incrémente ce chiffre
For Each c In Range('b2:b' & Range('b65536').End(xlUp).Row)
       
If Not c = '' Then
               
For i = 1 To UBound(tablo)
                       
If c = tablo(i, 1) Then
                                Cells(c.Row, 'D') = c & Format(tablo(i, 2), '000')
                                tablo(i, 2) = tablo(i, 2) + 1
                       
End If
               
Next i
       
End If
Next c

End Sub


salut
 

Discussions similaires

Statistiques des forums

Discussions
312 681
Messages
2 090 878
Membres
104 681
dernier inscrit
Gtcheumawe