salut RGI!
tu viens de m'enlever une grosse épine du pied. je n'avais vraiment pas compris comment déclarer mes variables lignes et colonnes.
Sinon j'ai une autre question. Je sais qu'utiliser les valeurs null dans desboucles c'est pratique. j'ai regarder sur l'aide de visual basic comment il fallait faire mais je ne comprends pas bien leur exemple
Dim MyVar, MyCheck
MyCheck = IsEmpty(MyVar) ' Renvoie True.
Je ne comprend bien pas ce que tout ça signifie.
My check et myvar sont bien des variables?
MyCheck = IsEmpty(MyVar)
Du coup ça veut dire: ma variable mycheck est égale à la fonction qui définie la variable myvar comme vide. Comme on l'a défini vide avant alors c'est vrai,n'est ce pas?
MyVar = Null ' Affectation de Null.
MyCheck = IsEmpty(MyVar)
Ici je ne comprend pas. ma variable check est égale à la fonction is empty qui définie myvar comme vide. Puisqu'on a défini myvar comme null je ne comprend pas pourquoi c'est faux.
MyCheck = IsEmpty(MyVar) ' Renvoie True.
Dans une boucle tant que, si je définie myvar comme prenant les valeurs d'une cellule. Si j'écris while mycheck=isempty(myvar), alors quand j'arriverais sur une cellule vide ma boucle s'arrêtera, c'est ça? et je n'ai pas besoin d'écrire my var isempty avant la boucle.
dans l'aide de quelqu'un d'autre j'ai aussi trouver la même chose mais c'est isnull et pas isempty qui est utilisé. Quelle est la différence entre les deux?
"Empty" indique une valeur de variable non initialisée
c'est-à-dire à laquelle aucune valeur initiale n'a été affectée
Empty équivaut à 0 si elle est utilisée dans un contexte numérique
et à une chaîne de longueur nulle ("") dans un contexte de chaînes.
La valeur "Null" indique que la variable de type Variant ne contient intentionnellement aucune donnée valide.
attention aux espaces insécable (" ") ou chr(32) et aux cellules contenant des formules
donc pour ton exemple
Dim MyVar, MyCheck
MyVar = ""
while mycheck<>myvar
'ta macro
wend
voilà j'espère que c'est compréhensible
pour t'aider mets ce code dans un module et lance le (F5)
Sub test()
Dim MyVar, MyCheck
MyCheck = IsNull(MyVar)
MsgBox "Avec IsNull et pas de déclaration de MyVar donc Mycheck = " & MyCheck
MyCheck = IsEmpty(MyVar)
MsgBox "Avec IsEmpty et pas de déclaration de MyVar donc Mycheck = " & MyCheck
MyVar = ""
MyCheck = IsNull(MyVar)
MsgBox "Avec IsNull => MyVvar = """" donc Mycheck = " & MyCheck
MyCheck = IsEmpty(MyVar)
MsgBox "Avec IsEmpty => MyVvar = """" donc Mycheck = " & MyCheck
MyVar = Empty
MyCheck = IsNull(MyVar)
MsgBox "Avec IsNull => MyVvar = Empty donc Mycheck = " & MyCheck
MyCheck = IsEmpty(MyVar)
MsgBox "Avec IsEmpty => MyVvar = Empty donc Mycheck = " & MyCheck
MyVar = Null
MyCheck = IsNull(MyVar)
MsgBox "Avec IsNull =>MyVvar = Null donc Mycheck = " & MyCheck
MyCheck = IsEmpty(MyVar)
MsgBox "Avec IsEmpty => MyVvar = Null donc Mycheck = " & MyCheck
MyVar = " "
MyCheck = IsNull(MyVar)
MsgBox "Avec IsNull => MyVvar = "" "" donc Mycheck = " & MyCheck
MyCheck = IsEmpty(MyVar)
MsgBox "Avec IsEmpty => MyVvar = "" "" donc Mycheck = " & MyCheck
MyVar = Chr(32)
MyCheck = IsNull(MyVar)
MsgBox "Avec IsNull => MyVvar = Chr(32) donc Mycheck = " & MyCheck
MyCheck = IsEmpty(MyVar)
MsgBox "Avec IsEmpty => MyVvar = Chr(32) donc Mycheck = " & MyCheck
End Sub
Ok, pour le "0"
RGI
__________________________
PS: VBA pour EXCEL est maintenant dans Bureautique
merci de poser vos questions VBA à cet endroit
salutations
RGI
Un MERCI en retour c'est sympa
et ne pas oublier le tag :après résolution.
salut RGI,
Je te remercie pour ce que tu m'as envoyé mais, comme tu le dis ma macro beug. Chez moi ça plante tout lorsque je l'ouvre. Du coup je ne peux pas exécuter ton module. Alors, j'ai essayé d'en faire une plus simple en essayant de déclarer mes données avec les colonnes. Finalement je crois que mon épine est toujours dans mon pied.
la macro que j'ai essayé de faire est bateau: j'ai écrit des chiffres dans la ligne10 et je veux que ma macro les réécrivent dans la ligne11 en ajoutant 1. La boucle doit s'arrêter quand il y a une case vide. le i me sert a changer de colonne.
le problème est que j'ai toujours pb exécution'1024'qui s'affiche et je n'arrive pas à le corriger. je croyais pourtant que j'avais compris tes explications.
Sub Macro1()
Set datatablerange = Worksheets("Feuil1").Range(("10" & "2"), (col & "11"))
Set rowinputcell = Worksheets("Feuil1").Range("10" & "2")
Set coluninputcell = Worksheets("Feuil1").Range("10" & "2")
Dim far As Variant
Dim vide As Variant
i = 2
vide = Empty
far = Worksheets("Feuil1").Cells("10,i").Value
While far <> IsEmpty(vide)
far = Worksheets("Feuil1").Cells("10,i").Value
far = far + 1
Worksheets("Feuil1").Cells("11,i").Value = far
i = i + 1
Wend
End Sub
hip hip hip RGI!
bravo bravo RGI
ça y est ça marche, je suis trop contente. Par contre j'ai encore une question à te poser.
Mon programme peut commencer de deux façons différentes:
Dim far As Variant
Dim vide As Variant ('je déclare toujours mes variables de la mêm façon')
Dim i As Integer
Sub Macro1()
Worksheets("Feuil1").Activate ('soit j'écris cette ligne d'instruction')
Set datatablerange = Worksheets("Feuil1").Cells(1, 1)
Set rowinputcell = Worksheets("Feuil1").Cells(10, 2)
Set coluninputcell = Worksheets("Feuil1").Cells(10, 3) ('soit ces trois lignes')
i = 2 ('après je continue pareil')
vide = " "
far = Worksheets("Feuil1").Cells(10, 2).Value
While far <> IsEmpty(vide)
far = far + 1
Worksheets("Feuil1").Cells(11, i).Value = far
i = i + 1
far = Worksheets("Feuil1").Cells(10, i).Value
Wend
End Sub
Cela m'amène à me questionner sur l'tuilité de datatablerange, rowinputcell etcoluninputcell
depuis le début je ne comprends pas bien à quoi ces paramètres servent. surtout quand quelquechose d'aussi simple qu'activate peut suffir.
de la même anière je ne comprend pas à quoi sert arrow table(). peux tu éclairer ma lanterne sur ce sujet?
Set datatablerange = Worksheets("Feuil1").Cells(1, 1)
Set rowinputcell = Worksheets("Feuil1").Cells(10, 2)
Set coluninputcell = Worksheets("Feuil1").Cells(10, 3) ('soit ces trois lignes')
donc ici tu as attribué des valeurs à ces trois variables
en effet dans ta macro ça ne sert à rien