XL 2013 Trouver variable de 2 cellules

badraaliou4

XLDnaute Occasionnel
Bonjour, le forum

j'ai deux cellules, je veux que même si l'une des cellules est vide la réponse soit vide
mais mon code ne prend en charge que de la première cellule.
ci-dessous mon code
VB:
Sub SEL()
Dim lig1 As String
lig1 = Worksheets("feuil1").Range("d9 , e9").Value
If lig1 = "" Then
    MsgBox "vide"
    End If
End Sub
et ci-joint le classeur
 

Pièces jointes

  • Classeur1.xlsm
    16.2 KB · Affichages: 9

Jacky67

XLDnaute Barbatruc
Bonjour, le forum

j'ai deux cellules, je veux que même si l'une des cellules est vide la réponse soit vide
mais mon code ne prend en charge que de la première cellule.
ci-dessous mon code
VB:
Sub SEL()
Dim lig1 As String
lig1 = Worksheets("feuil1").Range("d9 , e9").Value
If lig1 = "" Then
    MsgBox "vide"
    End If
End Sub
et ci-joint le classeur
Bonjour à tous
Essaye
VB:
Sub SEL()
If Application.CountA([D9:E9]) < 2 Then MsgBox "vide"
End Sub
 

badraaliou4

XLDnaute Occasionnel
re,
merci,
mais je veux definir à Dim as string car j'ai beaucoup de ligne
merci d'avance
VB:
    lig1 = Worksheets("menubureau").Range("C11,d11").Value
    lig2 = Worksheets("menubureau").Range("c12,d12").Value
    lig3 = Worksheets("menubureau").Range("c13,d13").Value
    lig4 = Worksheets("menubureau").Range("c14,d14").Value
    lig5 = Worksheets("menubureau").Range("c15,d15").Value
    lig6 = Worksheets("menubureau").Range("c16,d16").Value
    lig7 = Worksheets("menubureau").Range("c17,d17").Value
    lig8 = Worksheets("menubureau").Range("c18,d18").Value
    lig9 = Worksheets("menubureau").Range("c19,d19").Value
    lig10 = Worksheets("menubureau").Range("c20,d20").Value
    lig11 = Worksheets("menubureau").Range("c21,d21").Value
    lig12 = Worksheets("menubureau").Range("c22,d22").Value
 

Jacky67

XLDnaute Barbatruc
Re..
Sans connaitre le but finale essaye ceci
VB:
Sub SEL()
Dim C As Range
For Each C In [d11:d22]
 If Application.CountA(Range(C.Address & ":" & C.Offset(, 1).Address)) < 2 Then MsgBox C.Address & " ou " & C.Offset(, 1).Address & " vide"
 Next
End Sub
 

Pièces jointes

  • ControlSaisie.xlsm
    15.4 KB · Affichages: 3

Jacky67

XLDnaute Barbatruc
Re...
Avec le code de ton classeur tu n'obtiendras jamais un bon résultat
Un range retourne une "address" pas une valeur(Value), et encore moins déclaré en String
Tester ceci et tu devrais comprendre
VB:
Sub SEL()
Dim lig1 As String
If [D9] <> "" Then lig1 = [D9]
If [E9] <> "" Then lig1 = [E9]
If [D9] <> "" And [E9] <> "" Then lig1 = "Les deux sont renseignés ==> " & [D9] & [E9]
If [D9] = "" And [E9] = "" Then lig1 = "Les deux sont vides"
MsgBox "Lig1= " & lig1
End Sub
Ou cela
Code:
Sub test()
Dim lig1 As String
lig1 = "Non conforme"
If [D9] <> "" And [E9] = "" Then lig1 = [D9]
If [E9] <> "" And [D9] = "" Then lig1 = [E9]
MsgBox "Lig1= " & lig1
End Sub
Puis celle-ci que j'ai déjà donnée
Code:
Sub SEL()
    If Application.CountA([D9:E9]) < 2 Then
        [d10] = ""
        MsgBox "vide"
    Else
        [d10] = "ok"
    End If
End Sub
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
Votre code ressemble furieusement à ce que j'avais proposé,
VB:
Sub SEL()
    If [D9] = "" Or [E9] = "" Then
       MsgBox "Vide"
    End If
End Sub
mais Badraaliou tient absolument à son : Dim lig1 As String, si lig1 est vide ....
Vu le nombre de messages, peut être va t-il comprendre que cette syntaxe est impossible.
 

badraaliou4

XLDnaute Occasionnel
Re,
Bonjour et merci à vous tous....
J'ai eu une solution.
J'ai mis cette formule dans la cellule "F9"
=Si(D9="";"";Si(E9="";"";D9&" "&E9))
Puis
VB:
sub SEL()
DIM lig1 as string
lig1=range("F9").value
if lig1="" then
    msgbox "vide"
else
    [D10]="ok"
End if
End sub
Et Ça marche maintenant.
 

Statistiques des forums

Discussions
312 111
Messages
2 085 395
Membres
102 882
dernier inscrit
Sultan94