OVH Cloud OVH Cloud

[VBA] ComboBox.RowSource

7 réponses
Avatar
Péhemme
Bonsoir à Toutes et à Tous,

J'ai sur une page un bouton qui appelle une procédure qui appelle une Usf.
code :
Private Sub cmdInsOK2_Click()
VisualiseInscription
End Sub
Sub VisualiseInscription()
usfVisualP1.Show
End Sub
Cela fonctionne.

A l'activation de cette Usf, une ComboBox s'initialise par ce code :
Private Sub UserForm_Activate()
Dim DerLin As Double
DerLin = Sheets("Base de Données").Range("b1").End(xlDown).Row
'MsgBox DerLin
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
cboRecherche.ListIndex = -1
End Sub

Où est l'erreur de ce code sachant :
. que cboRecherche est la propriété Name de ma ComboBox
. que ma MsgBox (de contrôle) est bien alimentée du n° de ligne et
. que cela "bloque" sur :
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
avec le message :
Erreur d'exécution '380'
Impossible de définir la propriété RowSource. Valeur de propriété non
valide.

Je ne comprends pas :
. cela fonctionnait au Beausset sous Office 97 (pourtant il pleuvait)
. cela ne fonctionne pas à Rocquencourt sous Office XP.

Messieurs/Mesdames les MVP (même HS) et les autres excellents excelliens :
Merci d'avance de votre aide.

Péhemme (le seul qui s'accroche)

7 réponses

Avatar
michdenis
Bonjour Péhemme,

A )
Erreur de ton code est : tu a oublié d'insérer des guillemets simples autour d'un nom de l'onglet de ta feuille. Cela
est rendu nécessaire à cause des "espaces" présents dans le nom. Ta ligne de code va comme suit :

cboRecherche.RowSource = "'Base de Données!b2:b'" & DerLin

B )
Au sujet de la déclaration du type de variables de DerLin , il serait préférable qu'il soit définit "As Long" plutôt que
"As Double" ....cela représente une meilleur gestion de la mémoire vive !!! Tu aurais pu aussi le définir comme
"Integer" mais là tu dois faire attention : Integer = Limite de 32700 environ et le nombre de ligne dans excel 65536
donc possibilité de dépasser la limite permise par "Integer"

C ) Range("b1").End(xlDown).Row

Avec ce type de truc, il faut faire attention, une cellule vide dans ta colonne et c'est la catastrophe !!! ;-)

Personnellement je préfère :

with Sheets("Base de Données")
DerLin = .Range("b65536").end(xlup).row
end with


Salutations!








"Péhemme" a écrit dans le message de news:418681e0$0$3666$
Bonsoir à Toutes et à Tous,

J'ai sur une page un bouton qui appelle une procédure qui appelle une Usf.
code :
Private Sub cmdInsOK2_Click()
VisualiseInscription
End Sub
Sub VisualiseInscription()
usfVisualP1.Show
End Sub
Cela fonctionne.

A l'activation de cette Usf, une ComboBox s'initialise par ce code :
Private Sub UserForm_Activate()
Dim DerLin As Double
DerLin = Sheets("Base de Données").Range("b1").End(xlDown).Row
'MsgBox DerLin
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
cboRecherche.ListIndex = -1
End Sub

Où est l'erreur de ce code sachant :
. que cboRecherche est la propriété Name de ma ComboBox
. que ma MsgBox (de contrôle) est bien alimentée du n° de ligne et
. que cela "bloque" sur :
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
avec le message :
Erreur d'exécution '380'
Impossible de définir la propriété RowSource. Valeur de propriété non
valide.

Je ne comprends pas :
. cela fonctionnait au Beausset sous Office 97 (pourtant il pleuvait)
. cela ne fonctionne pas à Rocquencourt sous Office XP.

Messieurs/Mesdames les MVP (même HS) et les autres excellents excelliens :
Merci d'avance de votre aide.

Péhemme (le seul qui s'accroche)
Avatar
michdenis
Désolé, c'est plutôt comme ça

distraction quand tu nous tiens !


cboRecherche.RowSource = "'Base de Données'!b2:b" & DerLin


Salutations!


"michdenis" a écrit dans le message de news:
Bonjour Péhemme,

A )
Erreur de ton code est : tu a oublié d'insérer des guillemets simples autour d'un nom de l'onglet de ta feuille. Cela
est rendu nécessaire à cause des "espaces" présents dans le nom. Ta ligne de code va comme suit :

cboRecherche.RowSource = "'Base de Données!b2:b'" & DerLin

B )
Au sujet de la déclaration du type de variables de DerLin , il serait préférable qu'il soit définit "As Long" plutôt que
"As Double" ....cela représente une meilleur gestion de la mémoire vive !!! Tu aurais pu aussi le définir comme
"Integer" mais là tu dois faire attention : Integer = Limite de 32700 environ et le nombre de ligne dans excel 65536
donc possibilité de dépasser la limite permise par "Integer"

C ) Range("b1").End(xlDown).Row

Avec ce type de truc, il faut faire attention, une cellule vide dans ta colonne et c'est la catastrophe !!! ;-)

Personnellement je préfère :

with Sheets("Base de Données")
DerLin = .Range("b65536").end(xlup).row
end with


Salutations!








"Péhemme" a écrit dans le message de news:418681e0$0$3666$
Bonsoir à Toutes et à Tous,

J'ai sur une page un bouton qui appelle une procédure qui appelle une Usf.
code :
Private Sub cmdInsOK2_Click()
VisualiseInscription
End Sub
Sub VisualiseInscription()
usfVisualP1.Show
End Sub
Cela fonctionne.

A l'activation de cette Usf, une ComboBox s'initialise par ce code :
Private Sub UserForm_Activate()
Dim DerLin As Double
DerLin = Sheets("Base de Données").Range("b1").End(xlDown).Row
'MsgBox DerLin
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
cboRecherche.ListIndex = -1
End Sub

Où est l'erreur de ce code sachant :
. que cboRecherche est la propriété Name de ma ComboBox
. que ma MsgBox (de contrôle) est bien alimentée du n° de ligne et
. que cela "bloque" sur :
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
avec le message :
Erreur d'exécution '380'
Impossible de définir la propriété RowSource. Valeur de propriété non
valide.

Je ne comprends pas :
. cela fonctionnait au Beausset sous Office 97 (pourtant il pleuvait)
. cela ne fonctionne pas à Rocquencourt sous Office XP.

Messieurs/Mesdames les MVP (même HS) et les autres excellents excelliens :
Merci d'avance de votre aide.

Péhemme (le seul qui s'accroche)
Avatar
michdenis
Les guillemets simples fonctionnent si ils sont à la bonne place !!!

;-))


Salutations!



"Péhemme" a écrit dans le message de news:4186903b$0$3693$
Mille mercis encore une fois à toi !

Je n'ai pas su faire fonctionner avec les ' ' (guillemets simples) de chaque
côté de : Base de Données.
J'ai donc modifié le nom de la page en Base_de_Données et tout fonctionne.
Je n'aurai jamais trouvé sans ton aide.
T'ai-je remercié ?
Mille mercis pour ton aide
Merci également pour tes autres commentaires.

Péhemme (le seul qui s'accroche)


"michdenis" a écrit dans le message de news:

Bonjour Péhemme,

A )
Erreur de ton code est : tu a oublié d'insérer des guillemets simples
autour d'un nom de l'onglet de ta feuille. Cela
est rendu nécessaire à cause des "espaces" présents dans le nom. Ta ligne
de code va comme suit :

cboRecherche.RowSource = "'Base de Données!b2:b'" & DerLin

B )
Au sujet de la déclaration du type de variables de DerLin , il serait
préférable qu'il soit définit "As Long" plutôt que
"As Double" ....cela représente une meilleur gestion de la mémoire vive
!!! Tu aurais pu aussi le définir comme
"Integer" mais là tu dois faire attention : Integer = Limite de 32700
environ et le nombre de ligne dans excel 65536
donc possibilité de dépasser la limite permise par "Integer"

C ) Range("b1").End(xlDown).Row

Avec ce type de truc, il faut faire attention, une cellule vide dans ta
colonne et c'est la catastrophe !!! ;-)

Personnellement je préfère :

with Sheets("Base de Données")
DerLin = .Range("b65536").end(xlup).row
end with


Salutations!








"Péhemme" a écrit dans le message de
news:418681e0$0$3666$
Bonsoir à Toutes et à Tous,

J'ai sur une page un bouton qui appelle une procédure qui appelle une Usf.
code :
Private Sub cmdInsOK2_Click()
VisualiseInscription
End Sub
Sub VisualiseInscription()
usfVisualP1.Show
End Sub
Cela fonctionne.

A l'activation de cette Usf, une ComboBox s'initialise par ce code :
Private Sub UserForm_Activate()
Dim DerLin As Double
DerLin = Sheets("Base de Données").Range("b1").End(xlDown).Row
'MsgBox DerLin
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
cboRecherche.ListIndex = -1
End Sub

Où est l'erreur de ce code sachant :
. que cboRecherche est la propriété Name de ma ComboBox
. que ma MsgBox (de contrôle) est bien alimentée du n° de ligne et
. que cela "bloque" sur :
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
avec le message :
Erreur d'exécution '380'
Impossible de définir la propriété RowSource. Valeur de propriété non
valide.

Je ne comprends pas :
. cela fonctionnait au Beausset sous Office 97 (pourtant il pleuvait)
. cela ne fonctionne pas à Rocquencourt sous Office XP.

Messieurs/Mesdames les MVP (même HS) et les autres excellents excelliens :
Merci d'avance de votre aide.

Péhemme (le seul qui s'accroche)





Avatar
Claude Trouet
Bonsoir,
Sans garantie aucune, mais je pense que le fait de déclarer la variable
DerLin en Double doit y être pour quelque chose.
A mon avis, il vaut mieux déclarer celle-ci en Integer
CT

"Péhemme" a écrit dans le message de news:
418681e0$0$3666$
Bonsoir à Toutes et à Tous,

J'ai sur une page un bouton qui appelle une procédure qui appelle une Usf.
code :
Private Sub cmdInsOK2_Click()
VisualiseInscription
End Sub
Sub VisualiseInscription()
usfVisualP1.Show
End Sub
Cela fonctionne.

A l'activation de cette Usf, une ComboBox s'initialise par ce code :
Private Sub UserForm_Activate()
Dim DerLin As Double
DerLin = Sheets("Base de Données").Range("b1").End(xlDown).Row
'MsgBox DerLin
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
cboRecherche.ListIndex = -1
End Sub

Où est l'erreur de ce code sachant :
. que cboRecherche est la propriété Name de ma ComboBox
. que ma MsgBox (de contrôle) est bien alimentée du n° de ligne et
. que cela "bloque" sur :
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
avec le message :
Erreur d'exécution '380'
Impossible de définir la propriété RowSource. Valeur de propriété non
valide.

Je ne comprends pas :
. cela fonctionnait au Beausset sous Office 97 (pourtant il pleuvait)
. cela ne fonctionne pas à Rocquencourt sous Office XP.

Messieurs/Mesdames les MVP (même HS) et les autres excellents excelliens :
Merci d'avance de votre aide.

Péhemme (le seul qui s'accroche)




Avatar
Péhemme
Merci Claude de ton aide

Limiter la déclaration en Integer limite la base de données à 32000 et des..
lignes.
J'ai néanmoins testé ta proposition : malheureusement elle ne fait pas
avancer mon problème.

Péhemme (Le seul qui s'accroche)


"Claude Trouet" a écrit dans le message de
news:
Bonsoir,
Sans garantie aucune, mais je pense que le fait de déclarer la variable
DerLin en Double doit y être pour quelque chose.
A mon avis, il vaut mieux déclarer celle-ci en Integer
CT

"Péhemme" a écrit dans le message de news:
418681e0$0$3666$
Bonsoir à Toutes et à Tous,

J'ai sur une page un bouton qui appelle une procédure qui appelle une
Usf.
code :
Private Sub cmdInsOK2_Click()
VisualiseInscription
End Sub
Sub VisualiseInscription()
usfVisualP1.Show
End Sub
Cela fonctionne.

A l'activation de cette Usf, une ComboBox s'initialise par ce code :
Private Sub UserForm_Activate()
Dim DerLin As Double
DerLin = Sheets("Base de Données").Range("b1").End(xlDown).Row
'MsgBox DerLin
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
cboRecherche.ListIndex = -1
End Sub

Où est l'erreur de ce code sachant :
. que cboRecherche est la propriété Name de ma ComboBox
. que ma MsgBox (de contrôle) est bien alimentée du n° de ligne et
. que cela "bloque" sur :
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
avec le message :
Erreur d'exécution '380'
Impossible de définir la propriété RowSource. Valeur de propriété non
valide.

Je ne comprends pas :
. cela fonctionnait au Beausset sous Office 97 (pourtant il pleuvait)
. cela ne fonctionne pas à Rocquencourt sous Office XP.

Messieurs/Mesdames les MVP (même HS) et les autres excellents excelliens
: Merci d'avance de votre aide.

Péhemme (le seul qui s'accroche)








Avatar
Péhemme
Mille mercis encore une fois à toi !

Je n'ai pas su faire fonctionner avec les ' ' (guillemets simples) de chaque
côté de : Base de Données.
J'ai donc modifié le nom de la page en Base_de_Données et tout fonctionne.
Je n'aurai jamais trouvé sans ton aide.
T'ai-je remercié ?
Mille mercis pour ton aide
Merci également pour tes autres commentaires.

Péhemme (le seul qui s'accroche)


"michdenis" a écrit dans le message de news:

Bonjour Péhemme,

A )
Erreur de ton code est : tu a oublié d'insérer des guillemets simples
autour d'un nom de l'onglet de ta feuille. Cela
est rendu nécessaire à cause des "espaces" présents dans le nom. Ta ligne
de code va comme suit :

cboRecherche.RowSource = "'Base de Données!b2:b'" & DerLin

B )
Au sujet de la déclaration du type de variables de DerLin , il serait
préférable qu'il soit définit "As Long" plutôt que
"As Double" ....cela représente une meilleur gestion de la mémoire vive
!!! Tu aurais pu aussi le définir comme
"Integer" mais là tu dois faire attention : Integer = Limite de 32700
environ et le nombre de ligne dans excel 65536
donc possibilité de dépasser la limite permise par "Integer"

C ) Range("b1").End(xlDown).Row

Avec ce type de truc, il faut faire attention, une cellule vide dans ta
colonne et c'est la catastrophe !!! ;-)

Personnellement je préfère :

with Sheets("Base de Données")
DerLin = .Range("b65536").end(xlup).row
end with


Salutations!








"Péhemme" a écrit dans le message de
news:418681e0$0$3666$
Bonsoir à Toutes et à Tous,

J'ai sur une page un bouton qui appelle une procédure qui appelle une Usf.
code :
Private Sub cmdInsOK2_Click()
VisualiseInscription
End Sub
Sub VisualiseInscription()
usfVisualP1.Show
End Sub
Cela fonctionne.

A l'activation de cette Usf, une ComboBox s'initialise par ce code :
Private Sub UserForm_Activate()
Dim DerLin As Double
DerLin = Sheets("Base de Données").Range("b1").End(xlDown).Row
'MsgBox DerLin
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
cboRecherche.ListIndex = -1
End Sub

Où est l'erreur de ce code sachant :
. que cboRecherche est la propriété Name de ma ComboBox
. que ma MsgBox (de contrôle) est bien alimentée du n° de ligne et
. que cela "bloque" sur :
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
avec le message :
Erreur d'exécution '380'
Impossible de définir la propriété RowSource. Valeur de propriété non
valide.

Je ne comprends pas :
. cela fonctionnait au Beausset sous Office 97 (pourtant il pleuvait)
. cela ne fonctionne pas à Rocquencourt sous Office XP.

Messieurs/Mesdames les MVP (même HS) et les autres excellents excelliens :
Merci d'avance de votre aide.

Péhemme (le seul qui s'accroche)





Avatar
Péhemme
Ouais !!!

Un guillemet simple mal placé et c'est la cata...
J'ai testé ta nouvelle proposition : elle fonctionne à merveille.
C'est cette solution que je retiens : j'ai appris quelque chose.

Je ne me souviens plus de t'avoir dit : MERCI !!
;-)))

Péhemme (Le seul qui s'accroche)


"michdenis" a écrit dans le message de news:

Les guillemets simples fonctionnent si ils sont à la bonne place !!!

;-))


Salutations!



"Péhemme" a écrit dans le message de
news:4186903b$0$3693$
Mille mercis encore une fois à toi !

Je n'ai pas su faire fonctionner avec les ' ' (guillemets simples) de
chaque
côté de : Base de Données.
J'ai donc modifié le nom de la page en Base_de_Données et tout fonctionne.
Je n'aurai jamais trouvé sans ton aide.
T'ai-je remercié ?
Mille mercis pour ton aide
Merci également pour tes autres commentaires.

Péhemme (le seul qui s'accroche)


"michdenis" a écrit dans le message de news:

Bonjour Péhemme,

A )
Erreur de ton code est : tu a oublié d'insérer des guillemets simples
autour d'un nom de l'onglet de ta feuille. Cela
est rendu nécessaire à cause des "espaces" présents dans le nom. Ta ligne
de code va comme suit :

cboRecherche.RowSource = "'Base de Données!b2:b'" & DerLin

B )
Au sujet de la déclaration du type de variables de DerLin , il serait
préférable qu'il soit définit "As Long" plutôt que
"As Double" ....cela représente une meilleur gestion de la mémoire vive
!!! Tu aurais pu aussi le définir comme
"Integer" mais là tu dois faire attention : Integer = Limite de 32700
environ et le nombre de ligne dans excel 65536
donc possibilité de dépasser la limite permise par "Integer"

C ) Range("b1").End(xlDown).Row

Avec ce type de truc, il faut faire attention, une cellule vide dans ta
colonne et c'est la catastrophe !!! ;-)

Personnellement je préfère :

with Sheets("Base de Données")
DerLin = .Range("b65536").end(xlup).row
end with


Salutations!








"Péhemme" a écrit dans le message de
news:418681e0$0$3666$
Bonsoir à Toutes et à Tous,

J'ai sur une page un bouton qui appelle une procédure qui appelle une
Usf.
code :
Private Sub cmdInsOK2_Click()
VisualiseInscription
End Sub
Sub VisualiseInscription()
usfVisualP1.Show
End Sub
Cela fonctionne.

A l'activation de cette Usf, une ComboBox s'initialise par ce code :
Private Sub UserForm_Activate()
Dim DerLin As Double
DerLin = Sheets("Base de Données").Range("b1").End(xlDown).Row
'MsgBox DerLin
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
cboRecherche.ListIndex = -1
End Sub

Où est l'erreur de ce code sachant :
. que cboRecherche est la propriété Name de ma ComboBox
. que ma MsgBox (de contrôle) est bien alimentée du n° de ligne et
. que cela "bloque" sur :
cboRecherche.RowSource = "Base de Données!b2:b" & DerLin
avec le message :
Erreur d'exécution '380'
Impossible de définir la propriété RowSource. Valeur de propriété non
valide.

Je ne comprends pas :
. cela fonctionnait au Beausset sous Office 97 (pourtant il pleuvait)
. cela ne fonctionne pas à Rocquencourt sous Office XP.

Messieurs/Mesdames les MVP (même HS) et les autres excellents excelliens
:
Merci d'avance de votre aide.

Péhemme (le seul qui s'accroche)