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

[VBA] Valeur de variable nulle dans boucle For

FloPomPom

XLDnaute Nouveau
Bonjour à tous,

peut être n'ai je pas bien su chercher... d'habitude je fini toujours pas trouver.

Premièrement, est-ce correct de déclarer plusieurs variables de la manière suivante :
Code:
Dim v(4) As String

à la place de :

Code:
Dim v1 As String
Dim v2 As String
Dim v3 As String
Dim v4 As String



Sinon, ma question principale est d'élucider ceci :
Si je déclare quatre variables et que je j'affecte la valeur d'une des variables à une case, pas de problème :
Code:
Sub TEST()
Dim v(4) As String

v1 = "2312"
v2 = ""
v3 = "rien"
v4 = "AZ12"

Sheets(1).Range("A" & i) = v3

End Sub

Mais si je cherche à affecté chaque valeur de variable à une nouvelle cellule, excel semble ne comprend pas. Les valeurs sont nulles !

Code:
Sub TEST()
Dim v(4) As String

v1 = "2312"
v2 = ""
v3 = "rien"
v4 = "AZ12"

For i = 1 To 4
Sheets(1).Range("A" & i) = vi
Next i

End Sub



De même avec des valeurs Boolean, toutes les variables sont interprétées comme False après un For !
Code:
Sub Pouet()
Dim v_1 As Boolean
Dim v_2 As Boolean
Dim v_3 As Boolean
Dim DerLigne As Long
Sheets("Chronologie").Select
DerLigne = Range("A1000").End(xlUp).Row
Sheets("Prise contact").Select

v_1 = Sheets("Prise contact").Range("B2").Value = Sheets("Prise contact").Range("B1").Value
v_2 = Sheets("Chronologie").Range("B" & DerLigne).Value = Sheets("Prise contact").Range("B2").Value 
v_3 = Sheets("Chronologie").Range("C" & DerLigne).Value = Sheets("Prise contact").Range("K2").Value


If v_1 = True Then
Sheets("Prise contact").Range("V1") = "vrai"
Else: Sheets("Prise contact").Range("V1") = "faux"
End If

If v_2 = True Then
Sheets("Prise contact").Range("V2") = "vrai"
Else: Sheets("Prise contact").Range("V2") = "faux"
End If

If v_3 = True Then
Sheets("Prise contact").Range("V3") = "vrai"
Else: Sheets("Prise contact").Range("V3") = "faux"
End If

For i = 1 To 3
If v_i = True Then
Sheets("Prise contact").Range("w" & i) = "vrai" & i
Else: Sheets("Prise contact").Range("w" & i) = "faux"
End If
Next i

End Sub

Cette macro donne dans mon cas :
Faux Vrai Faux pour la colonne V
et Faux Faux Faux pour la colonne W !

Une idée ?

Merci d'avance !

FloPomPom
 

Dranreb

XLDnaute Barbatruc
Re : [VBA] Valeur de variable nulle dans boucle For

Bonsoir.

Je préfère spécifier toujours la borne de départ du tableau :
VB:
Dim v(1 To 4) As String
Pour accéder à un de ses éléments, toujours spécifier l'indice entre parenthèses :
VB:
v(1) = "2312"
v(2) = ""
v(3) = "rien"
v(4) = "AZ12"

For i = 1 To 4
Sheets(1).Range("A" & i) = v(i)
Next i
 

FloPomPom

XLDnaute Nouveau
Re : [VBA] Valeur de variable nulle dans boucle For

Merci beaucoup pour la solution, ça me parait logique maintenant que je l'ai sous les yeux !!

Je n'espérais pas une réponse aussi rapidement, j'ai donc posté mon problème ailleurs (developpez) ou j'ai obtenu quelques précisions bien utiles :


Merci encore !

FloPomPom
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Valeur de variable nulle dans boucle For

Bonjour à tous

Après les précisions, une variante syntaxique, histoire de varier les plaisirs

Code:
Sub c()
Dim v(1 To 4) As String
v(1) = "2312"
v(2) = ""
v(3) = "rien"
v(4) = "AZ12"
Sheets(1).Cells(1, 1).Resize(UBound(v)) = Application.Transpose(v)
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : [VBA] Valeur de variable nulle dans boucle For

Bonjour Staple

Je l'avais à l'esprit, évidemment, mais je me contentais de répondre aux questions.
Donc, profiter toujours du fait qu'on utilise des tableaux pour charger/décharger des plages entières de cellules. Non: utiliser plutôt toujours des tableaux (à 2 dimensions) pour pouvoir le faire !
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…