Valeur vide
geo3701
Messages postés
58
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Sous VBA je déclare des variable en "string".
ma macro va dans un fichier csv, fait des tests sur les cellules, est suivant les tests, mes variables prennent les valeurs des cellules et sont reportées dans un fichier xlsm.
Donc dans un premier temps j'initialise les variables par un " ="" " , j'ai aussi essayé le " =Empty ".
Ensuite mon code fait:
phoi = Range("ad" & i).Value
met = Range("ap" & i).Value
rf = Range("ae" & i).Value
loc = Range("ag" & i).Value
lib = Range("af" & i).Value
con = Range("ah" & i).Value
com = Range("av" & i).Value
valid = Range("aa" & i).Value
If Not IsEmpty(Range("b" & i)) Then
dc = Range("b" & i).Value
End If
les 8 premières lignes sont des cellules dont je suis sûr qu'elles ne sont pas vides.
Le test en if suivant fonctionne parfaitement, lorsque c'est le tour de la Range("b" & i) et qu'elle est vide, j'ai bien le end if directement.
Arrive ensuite la phase où ma macro inscrit ces valeurs dans mon fichier xlsm.
Range("b" & DCR1).Value = ref
Range("c" & DCR1).Value = phoi
Range("d" & DCR1).Value = rf
Range("e" & DCR1).Value = loc
Range("f" & DCR1).Value = lib
Range("g" & DCR1).Value = com
Range("h" & DCR1).Value = typlo
Range("i" & DCR1).Value = met
Range("j" & DCR1).Value = con
Range("k" & DCR1).Value = valid
If Not IsEmpty(dc) Then
Range("l" & DCR1).Value = dc
End If
Les 8 premières sont tjs OK.
Par contre, le test en if ne fonctionne pas. J'ai l'impression que pour vba, une variable qu'on a initilisée à "empty" ou " "" ", finalement cette variable n'est pas "isempty"...
Help!!
Merci d'avance
Sous VBA je déclare des variable en "string".
ma macro va dans un fichier csv, fait des tests sur les cellules, est suivant les tests, mes variables prennent les valeurs des cellules et sont reportées dans un fichier xlsm.
Donc dans un premier temps j'initialise les variables par un " ="" " , j'ai aussi essayé le " =Empty ".
Ensuite mon code fait:
phoi = Range("ad" & i).Value
met = Range("ap" & i).Value
rf = Range("ae" & i).Value
loc = Range("ag" & i).Value
lib = Range("af" & i).Value
con = Range("ah" & i).Value
com = Range("av" & i).Value
valid = Range("aa" & i).Value
If Not IsEmpty(Range("b" & i)) Then
dc = Range("b" & i).Value
End If
les 8 premières lignes sont des cellules dont je suis sûr qu'elles ne sont pas vides.
Le test en if suivant fonctionne parfaitement, lorsque c'est le tour de la Range("b" & i) et qu'elle est vide, j'ai bien le end if directement.
Arrive ensuite la phase où ma macro inscrit ces valeurs dans mon fichier xlsm.
Range("b" & DCR1).Value = ref
Range("c" & DCR1).Value = phoi
Range("d" & DCR1).Value = rf
Range("e" & DCR1).Value = loc
Range("f" & DCR1).Value = lib
Range("g" & DCR1).Value = com
Range("h" & DCR1).Value = typlo
Range("i" & DCR1).Value = met
Range("j" & DCR1).Value = con
Range("k" & DCR1).Value = valid
If Not IsEmpty(dc) Then
Range("l" & DCR1).Value = dc
End If
Les 8 premières sont tjs OK.
Par contre, le test en if ne fonctionne pas. J'ai l'impression que pour vba, une variable qu'on a initilisée à "empty" ou " "" ", finalement cette variable n'est pas "isempty"...
Help!!
Merci d'avance
4 réponses
Bonjour,
Si vous mettez un point d'arret sur le end if, lancez votre programme et des qu'il s'arrete, quelle valeur a dc ?????
Si vous mettez un point d'arret sur le end if, lancez votre programme et des qu'il s'arrete, quelle valeur a dc ?????
en fait ça va bien comme ça, car il entre une valeur vide dans mon fichier destinataire, mais ça lui fait qd meme une action à faire...ce qui m'embête c'est qu'il dédie qqs millisec pour ça, et une action de plus fois 5000 lignes, cela augmente le tx d'erreurs
Bonjour,
quel rapport entre qu'il dédie qqs millisec et cela augmente le tx d'erreurs ????????
quel rapport entre qu'il dédie qqs millisec et cela augmente le tx d'erreurs ????????
Bonjour,
Je ne connais pas l'ensemble de votre code, mais ce n'est pas un test en plus ou en moins qui fera la difference. Si vous voulez optimiser la vitesse:
_ il faut diminuer le nombre de lignes: le VBA etant interprete ligne par ligne
exemple: 1 ligne au lieux de 9
phoi = Range("ad" & i).Value: met = Range("ap" & i).Value: rf = Range("ae" & i).Value: loc = Range("ag" & i).Value: lib = Range("af" & i).Value: con = Range("ah" & i).Value: com = Range("av" & i).Value: valid = Range("aa" & i).Value:If Not IsEmpty(Range("b" & i)) Then dc = Range("b" & i).Value
C'est ce qui etait fait il y a quelque temps (annees 1980) car les processeurs etaient plutot lents, mais maintenant ce n'est plus le cas et vous perdez le la facilite de lecture
il y a d'autres moyens pour optimiser mais en fonction du code et de l'objectif a atteindre
Je ne connais pas l'ensemble de votre code, mais ce n'est pas un test en plus ou en moins qui fera la difference. Si vous voulez optimiser la vitesse:
_ il faut diminuer le nombre de lignes: le VBA etant interprete ligne par ligne
exemple: 1 ligne au lieux de 9
phoi = Range("ad" & i).Value: met = Range("ap" & i).Value: rf = Range("ae" & i).Value: loc = Range("ag" & i).Value: lib = Range("af" & i).Value: con = Range("ah" & i).Value: com = Range("av" & i).Value: valid = Range("aa" & i).Value:If Not IsEmpty(Range("b" & i)) Then dc = Range("b" & i).Value
C'est ce qui etait fait il y a quelque temps (annees 1980) car les processeurs etaient plutot lents, mais maintenant ce n'est plus le cas et vous perdez le la facilite de lecture
il y a d'autres moyens pour optimiser mais en fonction du code et de l'objectif a atteindre