[VBA] macro pour REPT et NBCAR

swan

XLDnaute Junior
Bonjour,

je voudrais écrire une macro équivalente à une formule du type:

=A1&REPT(".";20-NBCAR(A1))

En clair, cette formule copie la cellule A1 et ajoute un certain nombre de points dont l'opération est 20 soustrait au
nombre de caractères en A1. Par exemple,

En A1, 14859327 --> il y a 8 caractères
J'applique la formule en C1, ça fait 14859327............ --> il y a 12 points car 20 - 8 = 12


J'ai commencé une macro qui, pour l'instant, copie et colle une colonne de données:

Sub tetetest()

Dim n As Long
n = Range("A65536").End(xlUp).Row
For x = 1 To n
Cells(x, 1).Copy Destination:=Cells(x, 3) [& REPT(".";20-NBCAR(A))]
Next

End Sub


quel code VBA faut-il écrire pour remplacer la partie en rouge ?


sinon j'ai essayé cette ligne mais sans réussite:

Cells(x, 3) = Application.WorksheetFunction.Rept(?????)


Merci.
 

Pièces jointes

  • tetetest.xls
    12.5 KB · Affichages: 84
Dernière édition:

wilfried_42

XLDnaute Barbatruc
Re : [VBA] macro pour REPT et NBCAR

bonjour :

essaye cela

Code:
For x = 1 To n
Cells(x, 3) = left(Cells(x, 1)  & "....................................",20)
Next

au vu du fichier voici la macro
Sub point()
Dim i As Long
For i = 1 To Range("A65536").End(xlUp).Row
Cells(i, 3) = Left(Cells(i, 1) & ".........................................", 20)
Next i
End Sub
 
Dernière édition:

cbea

XLDnaute Impliqué
Re : [VBA] macro pour REPT et NBCAR

Bonjour swan, wilfried_42 et le forum,

Une autre solution :
Remplace :
Code:
Cells(x, 1).Copy Destination:=Cells(x, 3) [& REPT(".";20-NBCAR(A))]
par :
Code:
Cells(x, 1).Copy Destination:=Cells(x, 3)
        Cells(x, 3).Value = Cells(x, 3) & String(20 - Len(Cells(x, 3).Value), ".")
 

swan

XLDnaute Junior
Re : [VBA] macro pour REPT et NBCAR

Merci beaucoup wilfried_42 et cbea pour vos réponses rapides!

si j'ai bien compris ton code wilfried_42, il faut au minimum 20 points pour que
le nombre de caractères dans [donnée + ....] soit égal à 20.

Mais je crois que le code de cbea est plus conforme dans l'écriture même si ça revient au même.

enfin, c'est cool d'avoir plusieurs solutions différentes.

a+
 

swan

XLDnaute Junior
Re : [VBA] macro pour REPT et NBCAR

J'ai un autre problème. Je vous ai donné l'exemple avec les points mais en vrai
je veux mettre des espaces à la place, ce qui donnerait:

Cells(x, 1).Copy Destination:=Cells(x, 3)
Cells(x, 3).Value = Cells(x, 3) & String(20 - Len(Cells(x, 3).Value), " ")

ça marche avec n'importe quel caractère mais pas avec les espaces, la macro les compte pas.
ce qui fait que toutes mes données sont collées à droite comme sur la colonne A.
 

wilfried_42

XLDnaute Barbatruc
Re : [VBA] macro pour REPT et NBCAR

re:

je persiste m'enfin en trichant, ca marche
Code:
Sub point()
Dim i As Long
For i = 1 To Range("A65536").End(xlUp).Row
Cells(i, 3) = Cells(i, 1)
Cells(i, 3).NumberFormat = "@"
Cells(i, 3) = Left(Cells(i, 1) & "                                A", 20)
Next i
End Sub
 

cbea

XLDnaute Impliqué
Re : [VBA] macro pour REPT et NBCAR

Cela doit fonctionner mais si tu mets "1234 " dans la cellule sans format, cela donnera "1234"

donc peux-tu essayer avec ceci :
Code:
Cells(x, 1).Copy Destination:=Cells(x, 3)
[COLOR="Red"]Cells(x, 3).NumberFormat = "@"[/COLOR]     ' Cellule au format Texte
Cells(x, 3).Value = Cells(x, 3) & String(20 - Len(Cells(x, 3).Value), " ")
 

Discussions similaires

Réponses
5
Affichages
230
Réponses
17
Affichages
840

Statistiques des forums

Discussions
312 216
Messages
2 086 344
Membres
103 193
dernier inscrit
tedelio