Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro Erreur 380 propriété RowSource non valide

3 réponses
Avatar
Françoise
Bonjour à tous,

je m'adresse à vous car je tourne en rond et ne vois pas où est l'erreur,
j'utilise une UserForm d'un modèle créé par Misange sur la gestion de stock,
je l'ai adapté à mes besoins, mais là je bute sur mon formulaire pour entrer
un nouvel article en stock
je veux dans ma nouvelle fiche produit "UsfNew" faire apparaître dans une
combo box toutes les familles d'articles déjà existantes afin d'en
sélectionner une
je fais appel pour cela à une feuille de mon classeur appelée FAMILLES et
dans laquelle se trouve une colonne FAMILLE
Or dès que je lance ma macro faisant apparaître la UsfNew, j'ai une erreur 380
"Impossible de définir la propriété RowSource. Valeur de propriété non valide"
Quelqu'un peut il m'expliquer où est l'erreur ?
voici le code de la macro UsfNew :

========
'Préparé par Misange (Flo Cabon), septembre 2004
'Merci de citer vos sources
******

Private Sub UserForm_Initialize()
UsfMenu.Hide
Workbooks("Gestion du Stock SDF.xls").Activate 'pour le cas ou plusieurs
classeurs sont ouverts
CboFam.RowSource = ("TYPE!FAMILLE")
CboFam.ListIndex = -1
TxtDate.Value = Format(Now(), "dd/mmm/yyyy") 'met sous format français la
date du jour dans le textbox date.
End Sub
Private Sub CmdAnnuler_Click()
Unload UsfNew 'décharge le formulaire. Au prochain lancement la procédure
userform_initialize sera effecuée
'UsfNew.Hide cache le formulaire sans le décharger.
'Au prochain lancement, le userform_initialize n'est pas effectué
End Sub
Private Sub CmdValider_Click()

'**************************** VALIDATION DES DONNEES SAISIES
**************************************
'on vérifie que les champs texte sont remplis (sauf pour les commentaires
qui ne sont pas obligatoires)

If TxtRef.Value = "" Then
MsgBox ("Il faut indiquer la référence !")
Exit Sub 'interrompt la macro de validation, le userform reste affiché en
l'état pour correction
End If

If TxtDesignation.Value = "" Then
MsgBox ("Il faut indiquer la désignation")
Exit Sub 'interrompt la macro de validation, le userform reste affiché en
l'état pour correction
End If

If TxtPrix.Value = "" Then
MsgBox ("Il faut indiquer le prix")
Exit Sub 'interrompt la macro de validation, le userform reste affiché en
l'état pour correction
End If


If TxtDate.Value = "" Then
MsgBox ("Il faut indiquer la date !")
Exit Sub
Else
MaDate = CDate(TxtDate.Value)
End If

If TxtFournisseur.Value = "" Then
MsgBox ("Indiquez le fournisseur")
Exit Sub
End If

If CboFam.ListIndex = -1 Then
MsgBox ("Indiquez la famille")
Exit Sub
End If


'inscription des données récupérées du formulaire validé dans la feuille excel
'sélection de la ligne sur laquelle écrire (la première vide)
num = Sheets("STOCK").Range("A65536").End(xlUp).Row + 1
'on part du bas de la colonne, on cherche la première cellule non vide avec
end(xlup), on renvoie son N° avec row et on ajoute 1
'pour avoir le numéro de la ligne d'en dessous
'REFERENCE DESIGNATION PRIX FAMILLE QTE DEPART ENTREES SORTIES QTE EN
STOCK VALORISATION COMMENTAIRE DATE


Sheets("STOCKS").Activate
Range("A" & num).Value = TxtRef.Value
Range("B" & num).Value = TxtDesignation.Value
Range("C" & num).Value = TxtPrix.Value
Range("D" & num).Value = CboFam.Value
Range("E" & num).Value = TxtInitiale
Range("J" & num).Value = TxtCommentaire.Value
Range("K" & num).Value = CDate(TxtDate.Value) 'le cdate sert à convertir une
date au format des paramètres régionaux du pc
Unload UsfNew 'on décharge le formulaire. Du coup au prochain affichage, les
contrôles seront remis dans
'leur état initial. Si l'on voulait conserver certaines des données entrées,
on pourrait simplement cacher
'le formulaire (hide UsfNew, sans point entre les deux) et dans le
userform_initialize vider les
'contrôles de son choix.
UsfMenu.Show 'on réaffiche le userform donnant le choix de l'action à
l'utilisateur.
End Sub
===========

D'avance merci pour votre aide, car là je bloque complètement !

3 réponses

Avatar
Youky
Bonjour Francoise,
En attendant Misange...
peut être remplacer
CboFam.RowSource = ("TYPE!FAMILLE")
par
CboFam.RowSource = "FAMILLE"
Bien sur il faut que la colonne est été nommée dans la feuille FAMILLES
Non testé !
Youky

"Françoise" a écrit dans le message de
news:
Bonjour à tous,

je m'adresse à vous car je tourne en rond et ne vois pas où est l'erreur,
j'utilise une UserForm d'un modèle créé par Misange sur la gestion de
stock,
je l'ai adapté à mes besoins, mais là je bute sur mon formulaire pour
entrer
un nouvel article en stock
je veux dans ma nouvelle fiche produit "UsfNew" faire apparaître dans une
combo box toutes les familles d'articles déjà existantes afin d'en
sélectionner une
je fais appel pour cela à une feuille de mon classeur appelée FAMILLES et
dans laquelle se trouve une colonne FAMILLE
Or dès que je lance ma macro faisant apparaître la UsfNew, j'ai une erreur
380
"Impossible de définir la propriété RowSource. Valeur de propriété non
valide"
Quelqu'un peut il m'expliquer où est l'erreur ?
voici le code de la macro UsfNew :

======= > 'Préparé par Misange (Flo Cabon), septembre 2004
'Merci de citer vos sources
******

Private Sub UserForm_Initialize()
UsfMenu.Hide
Workbooks("Gestion du Stock SDF.xls").Activate 'pour le cas ou plusieurs
classeurs sont ouverts
CboFam.RowSource = ("TYPE!FAMILLE")
CboFam.ListIndex = -1
TxtDate.Value = Format(Now(), "dd/mmm/yyyy") 'met sous format français la
date du jour dans le textbox date.
End Sub
Private Sub CmdAnnuler_Click()
Unload UsfNew 'décharge le formulaire. Au prochain lancement la procédure
userform_initialize sera effecuée
'UsfNew.Hide cache le formulaire sans le décharger.
'Au prochain lancement, le userform_initialize n'est pas effectué
End Sub
Private Sub CmdValider_Click()

'**************************** VALIDATION DES DONNEES SAISIES
**************************************
'on vérifie que les champs texte sont remplis (sauf pour les commentaires
qui ne sont pas obligatoires)

If TxtRef.Value = "" Then
MsgBox ("Il faut indiquer la référence !")
Exit Sub 'interrompt la macro de validation, le userform reste affiché en
l'état pour correction
End If

If TxtDesignation.Value = "" Then
MsgBox ("Il faut indiquer la désignation")
Exit Sub 'interrompt la macro de validation, le userform reste affiché en
l'état pour correction
End If

If TxtPrix.Value = "" Then
MsgBox ("Il faut indiquer le prix")
Exit Sub 'interrompt la macro de validation, le userform reste affiché en
l'état pour correction
End If


If TxtDate.Value = "" Then
MsgBox ("Il faut indiquer la date !")
Exit Sub
Else
MaDate = CDate(TxtDate.Value)
End If

If TxtFournisseur.Value = "" Then
MsgBox ("Indiquez le fournisseur")
Exit Sub
End If

If CboFam.ListIndex = -1 Then
MsgBox ("Indiquez la famille")
Exit Sub
End If


'inscription des données récupérées du formulaire validé dans la feuille
excel
'sélection de la ligne sur laquelle écrire (la première vide)
num = Sheets("STOCK").Range("A65536").End(xlUp).Row + 1
'on part du bas de la colonne, on cherche la première cellule non vide
avec
end(xlup), on renvoie son N° avec row et on ajoute 1
'pour avoir le numéro de la ligne d'en dessous
'REFERENCE DESIGNATION PRIX FAMILLE QTE DEPART ENTREES SORTIES QTE
EN
STOCK VALORISATION COMMENTAIRE DATE


Sheets("STOCKS").Activate
Range("A" & num).Value = TxtRef.Value
Range("B" & num).Value = TxtDesignation.Value
Range("C" & num).Value = TxtPrix.Value
Range("D" & num).Value = CboFam.Value
Range("E" & num).Value = TxtInitiale
Range("J" & num).Value = TxtCommentaire.Value
Range("K" & num).Value = CDate(TxtDate.Value) 'le cdate sert à convertir
une
date au format des paramètres régionaux du pc
Unload UsfNew 'on décharge le formulaire. Du coup au prochain affichage,
les
contrôles seront remis dans
'leur état initial. Si l'on voulait conserver certaines des données
entrées,
on pourrait simplement cacher
'le formulaire (hide UsfNew, sans point entre les deux) et dans le
userform_initialize vider les
'contrôles de son choix.
UsfMenu.Show 'on réaffiche le userform donnant le choix de l'action à
l'utilisateur.
End Sub
========== >
D'avance merci pour votre aide, car là je bloque complètement !


Avatar
Françoise
Bonjour Youky

malheureusement cela ne marche pas, je dois préciser que
CboFam.RowSource = ("TYPE!FAMILLE")
est en fait CboFam.RowSource = ("FAMILLES!FAMILLE")
Bon cela ne change pas le souci, c'est juste histoire de préciser
Si d'autres idées, je suis "preneuse"
d'avance merci


Bonjour Francoise,
En attendant Misange...
peut être remplacer
CboFam.RowSource = ("TYPE!FAMILLE")
par
CboFam.RowSource = "FAMILLE"
Bien sur il faut que la colonne est été nommée dans la feuille FAMILLES
Non testé !
Youky

"Françoise" a écrit dans le message de
news:
Bonjour à tous,

je m'adresse à vous car je tourne en rond et ne vois pas où est l'erreur,
j'utilise une UserForm d'un modèle créé par Misange sur la gestion de
stock,
je l'ai adapté à mes besoins, mais là je bute sur mon formulaire pour
entrer
un nouvel article en stock
je veux dans ma nouvelle fiche produit "UsfNew" faire apparaître dans une
combo box toutes les familles d'articles déjà existantes afin d'en
sélectionner une
je fais appel pour cela à une feuille de mon classeur appelée FAMILLES et
dans laquelle se trouve une colonne FAMILLE
Or dès que je lance ma macro faisant apparaître la UsfNew, j'ai une erreur
380
"Impossible de définir la propriété RowSource. Valeur de propriété non
valide"
Quelqu'un peut il m'expliquer où est l'erreur ?
voici le code de la macro UsfNew :

======= > > 'Préparé par Misange (Flo Cabon), septembre 2004
'Merci de citer vos sources
******

Private Sub UserForm_Initialize()
UsfMenu.Hide
Workbooks("Gestion du Stock SDF.xls").Activate 'pour le cas ou plusieurs
classeurs sont ouverts
CboFam.RowSource = ("TYPE!FAMILLE")
CboFam.ListIndex = -1
TxtDate.Value = Format(Now(), "dd/mmm/yyyy") 'met sous format français la
date du jour dans le textbox date.
End Sub
Private Sub CmdAnnuler_Click()
Unload UsfNew 'décharge le formulaire. Au prochain lancement la procédure
userform_initialize sera effecuée
'UsfNew.Hide cache le formulaire sans le décharger.
'Au prochain lancement, le userform_initialize n'est pas effectué
End Sub
Private Sub CmdValider_Click()

'**************************** VALIDATION DES DONNEES SAISIES
**************************************
'on vérifie que les champs texte sont remplis (sauf pour les commentaires
qui ne sont pas obligatoires)

If TxtRef.Value = "" Then
MsgBox ("Il faut indiquer la référence !")
Exit Sub 'interrompt la macro de validation, le userform reste affiché en
l'état pour correction
End If

If TxtDesignation.Value = "" Then
MsgBox ("Il faut indiquer la désignation")
Exit Sub 'interrompt la macro de validation, le userform reste affiché en
l'état pour correction
End If

If TxtPrix.Value = "" Then
MsgBox ("Il faut indiquer le prix")
Exit Sub 'interrompt la macro de validation, le userform reste affiché en
l'état pour correction
End If


If TxtDate.Value = "" Then
MsgBox ("Il faut indiquer la date !")
Exit Sub
Else
MaDate = CDate(TxtDate.Value)
End If

If TxtFournisseur.Value = "" Then
MsgBox ("Indiquez le fournisseur")
Exit Sub
End If

If CboFam.ListIndex = -1 Then
MsgBox ("Indiquez la famille")
Exit Sub
End If


'inscription des données récupérées du formulaire validé dans la feuille
excel
'sélection de la ligne sur laquelle écrire (la première vide)
num = Sheets("STOCK").Range("A65536").End(xlUp).Row + 1
'on part du bas de la colonne, on cherche la première cellule non vide
avec
end(xlup), on renvoie son N° avec row et on ajoute 1
'pour avoir le numéro de la ligne d'en dessous
'REFERENCE DESIGNATION PRIX FAMILLE QTE DEPART ENTREES SORTIES QTE
EN
STOCK VALORISATION COMMENTAIRE DATE


Sheets("STOCKS").Activate
Range("A" & num).Value = TxtRef.Value
Range("B" & num).Value = TxtDesignation.Value
Range("C" & num).Value = TxtPrix.Value
Range("D" & num).Value = CboFam.Value
Range("E" & num).Value = TxtInitiale
Range("J" & num).Value = TxtCommentaire.Value
Range("K" & num).Value = CDate(TxtDate.Value) 'le cdate sert à convertir
une
date au format des paramètres régionaux du pc
Unload UsfNew 'on décharge le formulaire. Du coup au prochain affichage,
les
contrôles seront remis dans
'leur état initial. Si l'on voulait conserver certaines des données
entrées,
on pourrait simplement cacher
'le formulaire (hide UsfNew, sans point entre les deux) et dans le
userform_initialize vider les
'contrôles de son choix.
UsfMenu.Show 'on réaffiche le userform donnant le choix de l'action à
l'utilisateur.
End Sub
========== > >
D'avance merci pour votre aide, car là je bloque complètement !







Avatar
Youky
Re:
As tu bien définit la liste FAMILLE
en faisant Insertion/nom/définir
......FAMILLE
Fait réfrérence à:
ÞCALER(FAMILLES!$A$1;0;0;NBVAL(FAMILLES!$A:$A),1)
remplacer A par la bonne lettre de colonne
tu peux en principe mettre FAMILLES en RowSource directement dans la fenêtre
des propriétés de CboFam
Youky


"Françoise" a écrit dans le message de
news:
Bonjour Youky

malheureusement cela ne marche pas, je dois préciser que
CboFam.RowSource = ("TYPE!FAMILLE")
est en fait CboFam.RowSource = ("FAMILLES!FAMILLE")
Bon cela ne change pas le souci, c'est juste histoire de préciser
Si d'autres idées, je suis "preneuse"
d'avance merci


Bonjour Francoise,
En attendant Misange...
peut être remplacer
CboFam.RowSource = ("TYPE!FAMILLE")
par
CboFam.RowSource = "FAMILLE"
Bien sur il faut que la colonne est été nommée dans la feuille FAMILLES
Non testé !
Youky

"Françoise" a écrit dans le message
de
news:
Bonjour à tous,

je m'adresse à vous car je tourne en rond et ne vois pas où est
l'erreur,
j'utilise une UserForm d'un modèle créé par Misange sur la gestion de
stock,
je l'ai adapté à mes besoins, mais là je bute sur mon formulaire pour
entrer
un nouvel article en stock
je veux dans ma nouvelle fiche produit "UsfNew" faire apparaître dans
une
combo box toutes les familles d'articles déjà existantes afin d'en
sélectionner une
je fais appel pour cela à une feuille de mon classeur appelée FAMILLES
et
dans laquelle se trouve une colonne FAMILLE
Or dès que je lance ma macro faisant apparaître la UsfNew, j'ai une
erreur
380
"Impossible de définir la propriété RowSource. Valeur de propriété non
valide"
Quelqu'un peut il m'expliquer où est l'erreur ?
voici le code de la macro UsfNew :

======= >> > 'Préparé par Misange (Flo Cabon), septembre 2004
'Merci de citer vos sources
******

Private Sub UserForm_Initialize()
UsfMenu.Hide
Workbooks("Gestion du Stock SDF.xls").Activate 'pour le cas ou
plusieurs
classeurs sont ouverts
CboFam.RowSource = ("TYPE!FAMILLE")
CboFam.ListIndex = -1
TxtDate.Value = Format(Now(), "dd/mmm/yyyy") 'met sous format français
la
date du jour dans le textbox date.
End Sub
Private Sub CmdAnnuler_Click()
Unload UsfNew 'décharge le formulaire. Au prochain lancement la
procédure
userform_initialize sera effecuée
'UsfNew.Hide cache le formulaire sans le décharger.
'Au prochain lancement, le userform_initialize n'est pas effectué
End Sub
Private Sub CmdValider_Click()

'**************************** VALIDATION DES DONNEES SAISIES
**************************************
'on vérifie que les champs texte sont remplis (sauf pour les
commentaires
qui ne sont pas obligatoires)

If TxtRef.Value = "" Then
MsgBox ("Il faut indiquer la référence !")
Exit Sub 'interrompt la macro de validation, le userform reste affiché
en
l'état pour correction
End If

If TxtDesignation.Value = "" Then
MsgBox ("Il faut indiquer la désignation")
Exit Sub 'interrompt la macro de validation, le userform reste affiché
en
l'état pour correction
End If

If TxtPrix.Value = "" Then
MsgBox ("Il faut indiquer le prix")
Exit Sub 'interrompt la macro de validation, le userform reste affiché
en
l'état pour correction
End If


If TxtDate.Value = "" Then
MsgBox ("Il faut indiquer la date !")
Exit Sub
Else
MaDate = CDate(TxtDate.Value)
End If

If TxtFournisseur.Value = "" Then
MsgBox ("Indiquez le fournisseur")
Exit Sub
End If

If CboFam.ListIndex = -1 Then
MsgBox ("Indiquez la famille")
Exit Sub
End If


'inscription des données récupérées du formulaire validé dans la
feuille
excel
'sélection de la ligne sur laquelle écrire (la première vide)
num = Sheets("STOCK").Range("A65536").End(xlUp).Row + 1
'on part du bas de la colonne, on cherche la première cellule non vide
avec
end(xlup), on renvoie son N° avec row et on ajoute 1
'pour avoir le numéro de la ligne d'en dessous
'REFERENCE DESIGNATION PRIX FAMILLE QTE DEPART ENTREES SORTIES
QTE
EN
STOCK VALORISATION COMMENTAIRE DATE


Sheets("STOCKS").Activate
Range("A" & num).Value = TxtRef.Value
Range("B" & num).Value = TxtDesignation.Value
Range("C" & num).Value = TxtPrix.Value
Range("D" & num).Value = CboFam.Value
Range("E" & num).Value = TxtInitiale
Range("J" & num).Value = TxtCommentaire.Value
Range("K" & num).Value = CDate(TxtDate.Value) 'le cdate sert à
convertir
une
date au format des paramètres régionaux du pc
Unload UsfNew 'on décharge le formulaire. Du coup au prochain
affichage,
les
contrôles seront remis dans
'leur état initial. Si l'on voulait conserver certaines des données
entrées,
on pourrait simplement cacher
'le formulaire (hide UsfNew, sans point entre les deux) et dans le
userform_initialize vider les
'contrôles de son choix.
UsfMenu.Show 'on réaffiche le userform donnant le choix de l'action à
l'utilisateur.
End Sub
========== >> >
D'avance merci pour votre aide, car là je bloque complètement !