Déclaration de tableaux , affecter des valeurs dans un tableau

B

BRUNO I

Guest
Bonjour le forum,

L'aube va bientôt se lever, j'entends déjà les coqs chanter et je n'arrive pas à résoudre mon problème pourtant simple :

une colonne de références à traiter dans une colonne , au final si la référence fait moins de 9 caractères, je dois rajouter des compléments avec d'autres.

Ca marche plutot pas mal, mais la valeur affichée est systématiquement la dernière. Mon tab arr2 ne retient pas les valeurs précedentes.
(redim préserve à utiliser , enfin je ne sais pas...).

D'avance merci à ceux ou celles qui pourront m'aider

Voici le code :






Dim Arr1, Elt, Arr2

If UserRange.Columns.Count > 1 Then Exit Sub

Arr1 = UserRange.Value

For Each Elt In Arr1
MyLen = Len(Elt): Ad = 9 - MyLen

Arr2 = Elt & Right("exemple", Ad)

Next

Dest.Resize.Value = Application.Transpose(Arr2)

Unload UserForm1

End Sub
 
Y

Yeahou

Guest
Bonjour

COCORICO, c'est le matin.
C'est nouveau le UserRange ? UsedRange serait mieux.

Dim Arr1, Elt, Arr2,Compteur as long

If UserRange.Columns.Count > 1 Then Exit Sub

Arr1 = UsedRange.Value
Arr2 = UsedRange.Value
compteur=0
For Each Elt In Arr1
MyLen = Len(Elt): Ad = 9 - MyLen
compteur=compteur+1
Arr2(compteur) = Elt & Right("exemple", Ad)

Next

Dest.Resize.Value = Application.Transpose(Arr2)

Unload UserForm1

End Sub

Arr2 n'était pas dimensionné contrairement à Arr1 qui se dimentionne quand tu l'égalises à un tableau de cellules. En le dimentionnant comme Arr1 et en écrasant ensuite les valeurs, cela devrait fonctionner. Une boucle
For compteur=1 to usedrange.count
MyLen = Len(Arr1(compteur))
Ad = 9 - MyLen
Arr2(compteur) = Arr1(compteur) & Right("exemple", Ad)
Next
serait d'ailleurs plus efficace.

Cordialement, A+
 
B

BRUNO I

Guest
Bonjour à tous et merci de votre aide

En fait UserRange est le résultat d'une sélection d'un controle Réfedit.
J'ai réalisé un compteur comme tu me l'a conseillé mais avec un redim préserve (apparemment nécéssaire)et cela fonctionne :

Dim Arr1, Elt, Arr2()

Arr1 = UserRange.Value
TotElt = UserRange.Count
i = 0
For Each Elt In Arr1
MyLen = Len(Elt): Ad = 9 - MyLen

ReDim Preserve Arr2(TotElt)

Arr2(i) = Elt & Right("XXXXXXXXX", Ad)
i = i + 1

Next Elt
Dest.Value = Application.Transpose(Arr2)

Unload UserForm1

End Sub



Merci Yeahou et bonne journée
(Pas simple les tableaux )...

A+ , Bruno I
 

Statistiques des forums

Discussions
312 763
Messages
2 091 858
Membres
105 079
dernier inscrit
Biscot_399