Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 VBA - Boucle pour ajouter des caractères dans les cellules d'une colonne

Pepito

XLDnaute Nouveau
Bonjour,

Je suis nouveau sur le forum et déjà ma première question. Je chercher à créer une macro me permettant de compléter des identifiants. Sur ma colonne F, à partir de la ligne 2, j'ai une liste d'identifiants (de 2 à 5 caractères). J'aimerais donc rajouter des "0" devant chaque identifiant donc le nombre de caractères est inférieur à 5 afin de n'avoir que des identifiants à 5 caractères. J'ai commencé une macro (je débute le VBA) mais elle ne fonctionne pas. Pourriez-vous m'aider svp? merci beaucoup

Sub ajouter_identifiant()

Dim cell As Range

For Each cell In Columns("F")

If nbcar(cell) = 1 Then
cell = "'0000" & cell.Text
ElseIf nbcar(cell) = 2 Then
cell = "'000" & cell.Text
ElseIf nbcar(cell) = 3 Then
cell = "'00" & cell.Text
ElseIf nbcar(cell) = 4 Then
cell = "'0" & cell.Text
End If
Next

End Sub
 

CPk

XLDnaute Impliqué
Re : VBA - Boucle pour ajouter des caractères dans les cellules d'une colonne

Bonjour, il n'y a pas forcément besoin de macro.
Vous pouvez le faire via la personnalisation des cellules en entrant 5(ou plus) zéro comme dans l'exemple en image.
Sinon vous pouvez executer également cette macro qui vous demandera la colonne à formater.

Code:
Sub formater()
a = InputBox("Numéro de la colonne a formater")
activesheet.Columns(CInt(a)).NumberFormat = "00000"
End Sub
 

Pièces jointes

  • Sans titre.jpg
    66.8 KB · Affichages: 124
  • Sans titre.jpg
    66.8 KB · Affichages: 74

thebenoit59

XLDnaute Accro
Re : VBA - Boucle pour ajouter des caractères dans les cellules d'une colonne

Bonjour Pepito.

La solution de CPk est sans aucun doute plus simple.
Je te propose une solution en VBA, à ma façon on dira.

Code:
Sub test()
Dim Carac As Long, Refsupp As String

For Each cell In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
    Carac = Len(cell)
        If Carac < 5 Then
            Refsupp = "00000"
                cell.Value = Right(Refsupp, 5 - Carac) & cell.Value
        End If
Next cell
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : VBA - Boucle pour ajouter des caractères dans les cellules d'une colonne

Bonjour.
Et la mienne :
VB:
Sub AjouterIdentifiant()
Dim Plage As Range, T(), L As Long
Set Plage = Intersect([F2:F1048576], ActiveSheet.UsedRange)
T = Plage.Value
For L = 1 To UBound(T, 1)
   If VarType(T(L, 1)) = vbDouble Then
      T(L, 1) = Format(T(L, 1), "00000")
   Else
      T(L, 1) = Right$("00000" & T(L, 1), 5)
      End If: Next L
Plage.NumberFormat = "@"
Plage.Value = T
End Sub
 

Pepito

XLDnaute Nouveau
Re : VBA - Boucle pour ajouter des caractères dans les cellules d'une colonne

Super! En effet, la solution sans VBA et les macros me permettent bien d'avoir un identifiant à 5 caractères.

Merci beaucoup pour votre aide Dranreb, thebenoit59 et CPk !

Très bonne journée à vous.
 

Dranreb

XLDnaute Barbatruc
Re : VBA - Boucle pour ajouter des caractères dans les cellules d'une colonne

Attention les résultats sont toutefois différents. Tout dépend de ce que vous voulez. Si comme le laissait supposer la macro que vous aviez essayé de faire, vous voulez que les valeurs de la colonnes soient représentées en interne par du texte composé de chiffres en guise de caractères, ma macro et celle de thebenoit59 conviennent.
Un format de nombre d'une cellule quant à lui ne s'applique que si la cellule contient un nombre, donc de représentation interne Double, éventuellement Currency, voire Date.
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
149
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…