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

  • Initiateur de la discussion Initiateur de la discussion BRUNO I
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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+
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour