Erreur sur RowSource
Bonjour,
je viens vers vous vous demander de l'aide ; quand que je lance mon fichier qui lance un formulaire d'accueil et que je clic sur un bouton pour lancer un autres formulaire, je reçois une erreur, si j'ai un autre fichier est ouvert, sinon tout fonctionne normalement.
l'erreur que je reçois est la suivante :
Erreur d'exécution '380": Impossible de définir la propriété RowSource. Valeur de propriété non valide.
Voici un exemplaire du code :
Private Sub ComboBoxTypeMateriel_DropButtonClick()
Dim Materiels As Worksheet
Set Materiels = ThisWorkbook.Sheets("Data")
'Remplissage de la liste des type de prêt de matériel
Me.ComboBoxTypeMateriel.RowSource = "TypesMateriel"
End Sub
Bonjour et bienvenue,
as-tu un fichier ?
Bonjour,
Je ne peux envoyer le document, il y a des données confidentiel.
Mais je peux divulgué le code.
Formulaire principal
Private Sub Bt_Admin_Click()
Unload Me
Administration.Show
End Sub
Private Sub Bt_Ajouter_Click()
'Accès au formulaire pour un nouveau prêt de matériel
Unload Me
NewPretMateriel.Show
End Sub
Private Sub Bt_Archive_Click()
'Accès au formulaire des archives de prêt de matériel
Unload Me
ArchivesPret.Show
End Sub
Private Sub Bt_Inventaire_Click()
Unload Me
InventairePret.Show
End Sub
Private Sub Bt_Modifer_Click()
'Accès au formulaire des modfications de prêt de matériel
Unload Me
ModifPret.Show
End Sub
Private Sub Bt_Quitter_Click()
'Quitte le formulaire des nouveaux prêt de matériel
Unload Me
ActiveWorkbook.Save
Application.Quit
End Sub
Private Sub Bt_Statistique_Click()
'Accès aux statistiques des de prêt de matériel
Unload Me
StatMateriel.Show
End Sub
Private Sub UserForm_Activate()
'Mise en une dimension exact
Height = 380
Width = 580
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = CloseMode = 0
End Sub
Formulaire secondaire qui pose le problème
Private Sub Bt_Quitter_Click()
'Quitte le formulaire des nouveaux prêt de matériel
Unload Me
Application.Quit
End Sub
Private Sub Bt_Retour_Click()
'Revient au formulaire général
Unload Me
PretMateriel.Show
End Sub
Private Sub Bt_Enregistrement_Click()
'Enregistrement d'un nouveau prêt de matériel
Dim Prets As Worksheet
Dim ligne As Long
Dim DateEcheance As Date
' Dim NumEnregistrement As Integer, NumReference As Integer
'Accès par un lien vers la feuille "Liste pret"
Set Prets = ThisWorkbook.Sheets("Liste Pret")
' NumEnregistrement = Sheets("Liste Pret").Range("m" & ligne)
' NumReference = Sheets("Liste Pret").Range("n" & ligne)
'
' MsgBox NumEnregistrement
' MsgBox NumReference
'Calcul de la date de l'échéance du prêt
DateEcheance = Application.WorksheetFunction.WorkDay(Date, 15, JoursFeries)
'Ce position sur la dernière ligne et après le dernier enregistrement effectuer
ligne = Sheets("Liste Pret").[A1].End(xlDown).Row + 1
'Enregistrement d'un nouveau prêt de matériel
If MsgBox("Voulez-vous enregistrer le prêt de matériel ?", vbYesNo + vbQuestion, "Demande de confirmation") = vbYes Then
Sheets("Liste Pret").Range("a" & ligne) = TextBoxIndetifiant
Sheets("Liste Pret").Range("b" & ligne) = TextBoxPrenomNom
Sheets("Liste Pret").Range("c" & ligne) = TextBoxMail
Sheets("Liste Pret").Range("d" & ligne) = ComboBoxEntiter
Sheets("Liste Pret").Range("e" & ligne) = TextBoxDemandeRITM
Sheets("Liste Pret").Range("f" & ligne) = ComboBoxTypeMateriel
Sheets("Liste Pret").Range("g" & ligne) = ComboBoxPortable
'Enregistre le prêt de l'odinateur dans le tableau de la liste de pc portalbe en prêt
Call PretPortable
Sheets("Liste Pret").Range("h" & ligne) = TextBoxDateJour
Sheets("Liste Pret").Range("i" & ligne) = DateEcheance
Sheets("Liste Pret").Range("l" & ligne) = TextBoxComplementaire
Sheets("Liste Pret").Range("m" & ligne).Select
Selection.FillDown
Sheets("Liste Pret").Range("n" & ligne).Select
Selection.FillDown
End If
'Enregistre le fichier
ActiveWorkbook.Save
Unload Me
PretMateriel.Show
End Sub
Private Sub TextBoxDateJour_Change()
'Date du jour mise dans le champ et désactivation
TextBoxDateJour.Enabled = False
End Sub
Private Sub UserForm_Activate()
'Mise en une dimension exact
Height = 400
Width = 630
End Sub
Private Sub UserForm_Click()
'Activation de la ComboBox
Me.ComboBoxPortable.Enabled = True
Me.ComboBoxPortable.BackColor = RGB(255, 255, 255)
End Sub
Private Sub UserForm_Initialize()
Dim DateEcheance As Date
'Date du jour
DateDuJour = Now()
TextBoxDateJour = Format(DateDuJour, "DD/MM/YYYY")
DateEcheance = Application.WorksheetFunction.WorkDay(Date, 15, JoursFeries)
End Sub
Private Sub ComboBoxEntiter_DropButtonClick()
Dim Entites As Worksheet
Set Entites = ThisWorkbook.Sheets("Data")
'Remplissage de la liste des entiters
Me.ComboBoxEntiter.RowSource = "Entites" 'Erreur afficher
End Sub
Private Sub ComboBoxTypeMateriel_DropButtonClick()
Dim Materiels As Worksheet
Dim Book As Workbooks
'Set Book = Application.Workbooks("Projet Thor (version 10-3)")
Set Materiels = ThisWorkbook.Sheets("Data")
'Workbooks("Projet Thor (version 10-3)").Worksheets("Data").Activate
'Remplissage de la liste des type de prêt de matériel
Me.ComboBoxTypeMateriel.RowSource = "TypesMateriel" 'Erreur afficher
End Sub
Private Sub ComboBoxPortable_DropButtonClick()
'Désactivation du choix du portable disponible si le type de matériel est diférent de "Portable"
If Me.ComboBoxTypeMateriel = "Portable" Then
'activation de la ComboBox
Me.ComboBoxPortable.Enabled = True
'Vérifie et remplie la liste des ordinateurs mise à disposition
Call PortableKiosque
Me.ComboBoxPortable.RowSource = "ListePortableDispo"
Else
'Désactivation de la ComboBox
Me.ComboBoxPortable.Enabled = False
Me.ComboBoxPortable.Value = ""
Me.ComboBoxPortable.BackColor = RGB(0, 192, 192)
End If
End Sub
Sub PretPortable()
Dim gestion As Worksheet
Dim ValeurCombobox As String
Dim ligne As Integer
Dim Kiosque As Integer
Dim Pret As Integer
'Accès par un lien vers la feuille "Gestion portable"
Set gestion = ThisWorkbook.Sheets("Gestion portable")
'Récupère la valeur dans le choix de l'ordinateur portable mise en prêt
ValeurCombobox = ComboBoxPortable.Value
'Se positionne dans le tableau "ListePortable" sur la ligne de l'ordinatuer pourtable mise à disposition
ligne = Range("D1:F11").Find(ValeurCombobox, lookat:=xlWhole).Row
Kiosque = Range("D1:F11").Find(ValeurCombobox, lookat:=xlWhole).Column + 1
Pret = Range("D1:F11").Find(ValeurCombobox, lookat:=xlWhole).Column + 2
If ValeurCombobox <> "" Then
'mettre la valeur dans la cellule "kiosque" de vrai à faux et dans la cellule "prêt" de faux à vrai
With Sheets("Gestion portable")
Sheets("Gestion portable").Cells(ligne, Kiosque) = ""
Sheets("Gestion portable").Cells(ligne, Pret) = True
End With
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = CloseMode = 0
End Sub
Je ne peux envoyer le document, il y a des données confidentiel.
je comprends ... mais peut-être un fichier allégé où tu enlèves toutes les données confidentielles ? sinon cela revient à ce que l'on recrée un fichier de toute pièce en devinant les onglets et les userforms pour déterminer les corrections !
Je vais partager le document après avoir retirer tout ce qui est de confidentiel, le mot de passe pour le déverrouillage est "Test".
Vous constaterez que le fichier s'ouvre et l'on peux tout faire, mais si il y a un autre fichier excel d'ouvert vous aurez l'erreur que je parle plus haut.
Salut Enrico, le fil
N'aurais- tu pas dans le second fichier le même nom défini, si c'est le cas mets le nom du classeur avec.
non justement, l'erreur apparaît avec quelque soit le deuxième fichier ouvert.
Qu'il y ait ou non un autre fichier ouvert, j'ai une erreur (sur autre chose) qui m'empêche de continuer.
Difficile de poursuivre car le code macro est protégé.
D'un point de vue syntaxique, ne faut-il pas plutôt écrire Me.ComboBoxTypeMateriel.RowSource = Range("TypesMateriel").Address
Désolé je ne suis pas un spécialiste des userform.
bonjour,
Tu peux supprimer la Private Sub ComboBoxTypeMateriel_DropButtonClick() (en totalité)
à la place ajouter dans le Private Sub UserForm_Initialize mettre (à la fin)
Private Sub UserForm_Initialize()
Dim DateEcheance As Date
'Date du jour
DateDuJour = Now()
TextBoxDateJour = Format(DateDuJour, "DD/MM/YYYY")
DateEcheance = Application.WorksheetFunction.WorkDay(Date, 15, JoursFeries)
'Initialisation du combo :
Me.ComboBoxTypeMateriel.RowSource = ThisWorkbook.Sheets("Data").Range("TypesMateriel").Address(external:=True)
End Sub
A+
Bonsoir, merci pour votre aide.