Variables non déclarées

Bonsoir

.. je reviens sur la procédure ci-dessous..

Dans un exemple trouvé sur ce forum (en PJ)...et qui fonctionne, dans Userform_initialize, la variable "dl" apparaît non déclarée idem pour "re" dans Commandbutton...

Aucune erreur n'est signalée et les valeurs sont passées... comment est-ce possible ?

Private Sub CommandButton1_Click()

With Sheets("bdd")

'dl est la référence de a ligne,valeur, récupérée dans Userform

dl = .Cells(Rows.Count, 1).End(xlUp).Row

'ComboBox1.Value=valeur saisie

Set re = .Range("A1").Resize(dl).Find(ComboBox1.Value, lookat:=xlWhole)

'Le mot clé Nothing permet de distinguer une variable objet d'un objet réel

If re Is Nothing Then

'ans =6. c'est la valeur affectée à vbYes, vbYesNo=4

ans = MsgBox("ajouter l'article " & ComboBox1.Text, vbYesNo)

If ans = vbYes Then

'incrémente la ligne de saisie

dl = dl + 1

'passe les valeurs saisies en colonnes A et B

.Cells(dl, 1) = ComboBox1.Text

.Cells(dl, 2) = TextBox1.Value + 0

End If

Else

'applique le décalage à la valeur re

re.Offset(, 1) = TextBox1.Value

End If

End With

End Sub

Private Sub UserForm_Initialize()

With Sheets("bdd")

'compte le nombre de lignes occupées

dl = .Cells(Rows.Count, 1).End(xlUp).Row

'fenêtre CBX vide

ComboBox1.Clear

'se positionne à la dernière ligne

For i = 2 To dl

ComboBox1.AddItem .Cells(i, 1)

Next i

End With

'lance l'affichage du formulaire

End Sub

Bonjour

la variable "dl" apparaît non déclarée id... comment est-ce possible ?

Bien qu'il soit vivement recommandé de déclarer et de typer ses variables, cela n'est pas obligatoire. Simplement plus risqué...

Bye !

Bonjour jpmalb,

En complément de la réponse de gmb (salut), j'ajoute que si tu mets en début de module « Option Explicit », c'est où tu peux être sûr que ça bloquera à la compilation et qu'une erreur sera déclarée ! cette détection doit être considérée comme un avantage !

dhany

Bonjour

...j'étais resté sur cette option...(forcer les déclarations de variables) et lorsque j'ai remis cette déclaration, " DL et "RE" n'ont pas été reconnus...

mais la possibilité de passer outre n'est pas indiquée sur mon bouquin...

merci pour ces information..

20180425 105143

Bonjour,

j'ai complété le code et adapté les commentaires

Option Explicit
Private Sub CommandButton1_Click()
    Dim dl As Long, i As Long, re As Range, ans As Long
    With Sheets("bdd")
        'dl est le numéro de la dernière ligne utilisée sur base de la colonne 1 (=colonne A)
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        'ComboBox1.Value=valeur saisie
        'on recherche dans la colonne A (dans la plage utilisée la valeur saisie
        ' re est l'objet correspondant à la cellule trouvée
        Set re = .Range("A1").Resize(dl).Find(ComboBox1.Value, lookat:=xlWhole)
        'Le mot clé Nothing permet de distinguer une variable objet d'un objet réel
        ' si re est rien, on n'a pas trouvé la valeur saisie dans la liste
        If re Is Nothing Then
            'ans =6. c'est la valeur affectée à vbYes, vbYesNo=4
            ans = MsgBox("ajouter l'article " & ComboBox1.Text, vbYesNo)
            If ans = vbYes Then
                'incrémente la ligne de saisie
                dl = dl + 1
                'passe les valeurs saisies en colonnes A et B
                .Cells(dl, 1) = ComboBox1.Text
                .Cells(dl, 2) = TextBox1.Value + 0
            End If
        Else
            'applique le décalage à la valeur re
            ' on met la quantité dans la cellule située une position à droite de la cellule trouvée (=colonne B)
            re.Offset(, 1) = TextBox1.Value
        End If
    End With
End Sub

Private Sub UserForm_Initialize()
Dim dl As Long, i As Long
    With Sheets("bdd")
        'compte le nombre de lignes occupées
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        'fenêtre CBX vide
        ComboBox1.Clear
        'on remplit la liste combobox sur base des cellules en colonne 1 (=colonne A)
        For i = 2 To dl
            ComboBox1.AddItem .Cells(i, 1)
        Next i
    End With
    'lance l'affichage du formulaire
End Sub
Rechercher des sujets similaires à "variables declarees"