OVH Cloud OVH Cloud

Le grand vide

5 réponses
Avatar
Jacquouille
Bonjour

En VBA, peut-on considérer que ISEMPTY(x) soit l'équivalent de "" ?
Etre vide, est-ce la même chose que contenir ""(rien) ?

Déjà merci
Bonne fin de journée.

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.

5 réponses

Avatar
Michel__D
Bonjour,
Le 23/05/2019 à 15:23, Jacquouille a écrit :
Bonjour
En VBA, peut-on considérer que ISEMPTY(x) soit l'équivalent de "" ?
Etre vide, est-ce la même chose que contenir ""(rien) ?

Dans la doc, il parle de variable initialisée ou pas,
donc a priori la valeur "" signifierai que la variable est initialisée sur ""
Avatar
MichD
Bonjour,
Un petit exemple, 3 procédures presque identiques. La seule différence
est le type de la variable S. À moins que la variable S soit déclarée
"AS Variant", dans tous les autres cas, IsEmpty(A) est faux. Une
variable de type Variant peut-être n'importe quoi, un nombre, un texte,
un tableau (array) ou un objet (Range, Worksheet, workbook).
Une variable de type String contient "" donc pas vide.
Une variable de type Long ou integer... contient 0 donc pas vide
Une variable de type "Variant" peut être "" ou 0 jusqu'au moment où
l'usager lui attribuera une valeur, par conséquent elle est vide.
'------------------
Sub test1()
Dim S As String
A = S
MsgBox IsEmpty(A)
End Sub
'------------------
Sub test2()
Dim S As Long
A = S
MsgBox IsEmpty(A)
End Sub
'------------------
Sub test3()
Dim S As Variant
A = S
MsgBox IsEmpty(A)
End Sub
'------------------
Sub test4()
Dim S As Variant, B()
A = B()
MsgBox IsEmpty(A)
End Sub
'------------------
MichD
Avatar
Jacquouille
Bonjour
Oufti, ça va pas alléger mon neurone, cette démo.
Pas facile à décortiquer, mais on essaie.
Que veulent dire les () dans ton expression: A = B() ?
Bonne journée.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
qc6l36$hp6$
Bonjour,
Un petit exemple, 3 procédures presque identiques. La seule différence
est le type de la variable S. À moins que la variable S soit déclarée
"AS Variant", dans tous les autres cas, IsEmpty(A) est faux. Une
variable de type Variant peut-être n'importe quoi, un nombre, un texte,
un tableau (array) ou un objet (Range, Worksheet, workbook).
Une variable de type String contient "" donc pas vide.
Une variable de type Long ou integer... contient 0 donc pas vide
Une variable de type "Variant" peut être "" ou 0 jusqu'au moment où
l'usager lui attribuera une valeur, par conséquent elle est vide.
'------------------
Sub test1()
Dim S As String
A = S
MsgBox IsEmpty(A)
End Sub
'------------------
Sub test2()
Dim S As Long
A = S
MsgBox IsEmpty(A)
End Sub
'------------------
Sub test3()
Dim S As Variant
A = S
MsgBox IsEmpty(A)
End Sub
'------------------
Sub test4()
Dim S As Variant, B()
A = B()
MsgBox IsEmpty(A)
End Sub
'------------------
MichD
Avatar
MichD
Dans cette ligne de code :
Dim S As Variant, B()
B() c'est la manière de déclarer une variable "Tableau -array". Comme
cette ligne débute par DIM, on n’est pas tenu d'écrire Dim pour chacune
des variables. Ce serait différent si chacune des variables S et B()
étaient déclarés sur chacune leur ligne.
On peut ajouter selon le contenu qu'aura le tableau,
dim B() As String OU As Long ... lorsque le type n'est pas défini
expressément, on suppose que B() as Variant.
MichD
Avatar
Jacquouille
Merci Denis
Plus j'en apprends sur Excel, plus je constate le "grand vide - empty" dans
mon cerveau.
Je crois que je n'arriverai jamais à boucher tous les trous.... -))
Et dire que je suis toujours en 2003. (2019-2003. Plus que 16 versions à
apprendre)
Bonne fin de journée, et de semaine dans la bonne humeur.
https://www.youtube.com/watch?v=Gl8AFljtG7U
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
qc8ga4$ki3$
Dans cette ligne de code :
Dim S As Variant, B()
B() c'est la manière de déclarer une variable "Tableau -array". Comme
cette ligne débute par DIM, on n’est pas tenu d'écrire Dim pour chacune
des variables. Ce serait différent si chacune des variables S et B()
étaient déclarés sur chacune leur ligne.
On peut ajouter selon le contenu qu'aura le tableau,
dim B() As String OU As Long ... lorsque le type n'est pas défini
expressément, on suppose que B() as Variant.
MichD