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.

7model-type.xlsm (219.24 Ko)

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+

11model-type.xlsm (222.80 Ko)

Bonsoir, merci pour votre aide.

Rechercher des sujets similaires à "erreur rowsource"