Une variable "" qui ne serait d'après Excel "Empty" pas =0 et pas """" ?

Bonsoir

voila j'analyse une cellule vide dans un tableau et j'aimerais faire une condition à savoir

que si la cellule analysée est différente de 0 et différente de "vide" et bien cela veut dire qu'il y a une valeur numérique et c'est elle qui m'interesse et la boucle s'arrete. Sauf que je pige pas alors que la case est (pour moi) vide (donc la variable qui y réfère aussi) et que dans la msgbox me dit qu'elle est "" (donc à priori vide...) et bien la condition n'est pas respectée ... Je pige pas pour excel la variable n'est pas vide ?

merci pour cette aide (pour débutant en VBA)

Set Plg2 = Worksheets("Axe En Plan").Range(lettre & x1 & ":E10")
cellule = Worksheets("Axe En Plan").Cells(x1, y)

For i = 5 To 1 Step -1
If IsEmpty(cellule) = True Then
cellule = 0
End If
If cellule = """" Then
cellule = 0
End If
If cellule <> 0 Then
SA2 = Worksheets("Axe En Plan").Cells(x1, y)
Exit For
End If
x1 = x1 - 1
cellule = Worksheets("Axe En Plan").Cells(x1, y)
Next i

Bonjour,

Pourrais-tu poster la totalité de ta macro ...

Bonsoir,

Une piste.

Dim Cell As Range
    Set Cell = ActiveCell
    If IsNumeric(Cell) And Cell.Value <> 0 Then
        '...
    End If

Merci ca fonctionne !!! Juste une question dans quelle "type" de variable je dois "ranger" l'objet cellule ? En Byte en String ? car ca peut être une case "vide" ou un "chiffre" ou du "texte" ?

Sub TABULATION_v1()

Dim Plg As Range
Dim cel As Range
Dim valeur
Dim cel2 As Range
Dim Plg2 As Range

Set Plg = Worksheets("Axe En Plan").Range("E10:E102")
Set Pk = Worksheets("Source").Range("F9")

For Each cel In Plg
If IsNumeric(cel.Value) And cel.Value > Pk Then
SA1 = cel.Value
Exit For
End If

If IsNumeric(cel.Value) Then valeur = cel.Value

Next cel

Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
Set PlageDeRecherche = Plg
Set SA1 = Plg.Cells.Find(what:=SA1, LookAt:=xlWhole)
AdresseTrouvee = SA1.Address

x = Range(SA1.Address).Row
x1 = Range(SA1.Address).Row - 1
y = Range(SA1.Address).Column

lettre = Chr(y + 64)

Set Plg2 = Worksheets("Axe En Plan").Range(lettre & x1 & ":E10")
cellule = Worksheets("Axe En Plan").Cells(x1, y)

For i = 5 To 1 Step -1
If IsNumeric(cellule) And cellule <> 0 Then
SA2 = Worksheets("Axe En Plan").Cells(x1, y)
Exit For
End If
x1 = x1 - 1
cellule = Worksheets("Axe En Plan").Cells(x1, y)
Next i

MsgBox "   valeur borne sup " & SA1
MsgBox "   valeur borne inf " & SA2

End Sub

Bonjour, Salut à tous !

Juste pour ta dernière question...

Une cellule est assimilable à un type Variant (tous types de données).

La valeur Empty ne peut être prise que par une variable de type Variant...

(Une variable numérique non initialisée aura la valeur 0 ; Une variable String non initialisée aura la valeur "" [chaîne vide])

Une variable ayant la valeur Empty renverra 0 en contexte numérique et "" en contexte textuel et répondra aux tests de la même façon...

Cordialement.

Bonjour Merci

Mais donc quel serait le test "=" pour une variante

String non initialisée aura la valeur "" [chaîne vide]

qui si je comprends bien est ce que j'ai quand une case excel est "vide", par défaut pour excel c'est une "chaine vide", donc si je formule autrement si je veux pas faire un test <> mais = car la je "contourne" le problème avec "IsNumeric"

Justement ! Tu peux tester un Variant avec IsEmpty()...

Si Vrai tu es alors assuré que la variable ou la cellule ne contient rien, et ne contient ni 0 ni ""

A toi de tester selon le résultat cherché !

NB- If IsEmpty(a) Then suffit amplement, If IsEmpty(a) = True... serait dans le langage courant un pléonasme !

Cordialement.

Bonsoir merci

Bon il faut que je refasse le test car je crois bien que le test isempty() fonctionnait pas hier, excel considérait qu'il y avait quelque chose

je vais refaire des tests pour comprendre

Rechercher des sujets similaires à "variable qui serait empty pas"