Signification du nombre après Rows.Count

Bonjour

Dans l'userform, j'ai cette instruction

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

une explication sur cette ligne, vue dans ce forum, précisait que le "1" situé après "Rows.Count" indiquait la colonne A dans la feuille.

Quand je reprends mon instruction et que je change le "1" en "2",ce sont toujours les éléments de la colonne 1 qui apparaissent dans la sélection de la combobox.

Y a t-il autre chose à modifier ?

Merci

en PJ le fichier

Bonjour,

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

une explication sur cette ligne, vue dans ce forum, précisait que le "1" situé après "Rows.Count" indiquait la colonne A dans la feuille.

le 1 ne sert qu'à déterminer dl, la dernière ligne, changer 1 en 2 ne modifie pas dl

il faut aussi et surtout changer cette ligne

ComboBox1.AddItem .Cells(i, 2)

Bonjour

au plus simple

Private Sub UserForm_Initialize()
    With Sheets("bdd")
        ComboBox1.List = .Range("A2:B" & .Range("A" & Rows.Count).End(xlUp).Row).Value
    End With
End Sub

Private Sub ComboBox1_Change()
    TextBox1.Value = ComboBox1.Column(1)
End Sub

A+

Maurice

Voilà la réponse trouvée (échange de 2008) qui m'a induit en erreur

Rows.count --> le nombre de ligne

1 --> pour la colonne 1 (donc colonne A)

End(xlup).row --> pour repérer la dernière ligne pleine

le 1 sera donc toujours inclus et le seul nombre à être utilisé dans cette configuration donc parce que l'on traite de la dernière à la 1ere ligne ?

Bonjour,

La propriété "Cells" attend deux arguments facultatifs (on le reconnait dans l'intellisense car ils sont entre crochets), le premier est le numéro de ligne et le second le numéro de colonne donc :

Cells(Rows.Count, 1)

signifie que la cellule à laquelle on fait référence est la toute dernière de la colonne A donc si >= Excel 2007 c'est la cellule "A1048576" sinon pour les versions antérieures, c'est "A65536"

La propriété "End(xlUp)" quand à elle attend un argument obligatoire, (la direction de recherche pour trouver la première cellule non vide rencontrée depuis la position de départ) et comme c'est un Range, tu peux utiliser toutes les propriétés d'un Range comme par exemple ici la propriété Row

... j'ai compris...

Merci

... je reviens sur la procédure jointe..

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

Bonsoir,

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

C'est possible car l'Option Explicit qui demande la définition explicite des variables, n'est pas présente.

Du coup, la variable "dl " est définie implicitement et est donc de type Variant.

Rechercher des sujets similaires à "signification nombre rows count"