VBA - élément d'un tablo

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 !

Hervé

XLDnaute Barbatruc
bonjour

petite interrogation de ma part, alors je me tourne vers vous.

je ne comprend pas pourquoi cette macro ne fonctionne pas, elle doit simplement mettre en minuscule un texte :

Code:
Sub macro1()
Dim tablo, element
Dim texte As String

texte = "VIVE LE VENT D'HIVER"
tablo = Split(texte, " ")

For Each element In tablo
    element = LCase(element)
Next element

MsgBox Join(tablo, " ")
End Sub
alors que celle-ci fonctionne :

Code:
Sub macro2()
Dim tablo
Dim i As Byte
Dim texte As String

texte = "VIVE LE VENT D'HIVER"
tablo = Split(texte, " ")

For i = 0 To UBound(tablo)
    tablo(i) = LCase(tablo(i))
Next i

MsgBox Join(tablo, " ")
End Sub
dans la premiere macro, la variable élément ne serait-elle pas attaché au tableau ?

en vous remerciant par avance.

salut
 
Re : VBA - élément d'un tablo

jour Hervé

il me semble que dans ta première macro, ce n'est pas parce que tu changes ton texte de majuscule en minuscule que les éléments du tableau subissent cette transformation.
Il te faut reconstuire le tableau avec les nouveaux éléments en minuscule

d'où

Code:
Sub macro1()
Dim tablo As Variant, element As Variant
Dim texte As String
Dim i as integer
texte = "VIVE LE VENT D'HIVER"
tablo = Split(texte, " ")
i = 0
For Each element In tablo
    element = LCase(element)
    tablo(i) = element: i = i + 1
Next element
MsgBox Join(tablo, " ")
End Sub
 
enfin ce n'est que mon avis
 
Amicalement
 
Re : VBA - élément d'un tablo

Salut

En fait, ici le changement n'est pas répercuté sur les éléments du tableau parce que ce ne sont que des variables String "simples" et non pas des objets. Si ton tableau était composé d'objets (des Range par exemple) alors le changement se ferait bien directement dans le tableau, parce que tu référencerais l'objet source lui-même, alors que là ton "element" est une variable qui a pris le type String et qui récupère la valeur de chacune des chaînes du tableau - mais ce ne sont pas les chaînes elles-mêmes.
Pour aller modifier directement chacune des chaines du tableau avec une syntaxe de ce type, il faudrait utiliser un pointeur, ce que d'autres langages plus évolués permettent, mais hélas pas le VBA...

Je ne sais pas si mon explication est très claire. Si on a compris ça, on a compris globalement la différence entre une variable simple et une variable objet.
 
- 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

Discussions similaires

Réponses
15
Affichages
784
Réponses
5
Affichages
688
Réponses
4
Affichages
733
Retour