La méthode 'Value' de l'objet range à échoué

Bonjour

Quand je valide la création d'une référence en passant par le bouton "Lancement création référence"→j'arrive sur le UserForm "Page2CréationRéférence" et que je valide la création la macro d'enregistrement de la référence fonctionne.

Par contre passe à l'ouverture du fichier quand je passe par le bouton "Lancement Page de garde " pour arrivé sur le userForme "Page1degarde" puis que j'appui sur le bouton "Création Référence" que je valide la création, la macro d'enregistrement de la référence plante! avec comme message "La méthode 'Value' de l'objet range à échoué

Auriez vous une solution?

Bonjour,

Vous avez un problème qui vient du fait que vous utilisez à la compilation la propriété "RowSource" pour le tableau structuré : "TabRefLacour" qui est modifié à l'exécution, ce qu'Excel n 'accepte pas.Vous faites référence à ce tableau dans le formulaire "Page5CréationOutil" pour toutes les ComboBox's "CbxRefLacour" et suivantes. Il faut utiliser à la place la propriété "List" et charger les Combobox's à l'exécution.

Les "RowSource" relatifs aux tableaux de la feuille source2 restent valides car il s'agit de tables non modifiées à l'exécution.

Par ailleurs, vous auriez intérêt à utiliser le code adapté au tableau structuré, plus clair et plus facilement maintenable si vous êtes amené à insérer des colonnes supplémentaires dans votre tableau

Private Sub BtnValidation_Click()

    Dim M As Integer, ligne As ListRow

    If MsgBox("Confirmez-vous l'insertion de ce nouvelle Référence ?", vbYesNo, "Demande de confirmation d'ajout") = vbNo Then Exit Sub

    With [TabRefLacour].ListObject
        'ajout ligne et assignation indice de la ligne
        Set ligne = .ListRows.Add: M = ligne.Index

        'remplissage nouvelle ligne
        .ListColumns("Référence Lacour").DataBodyRange(M) = TxtRefLacour.Value
        .ListColumns("Désignation pièce").DataBodyRange(M) = TxtDésignationPièce.Value
        .ListColumns("Client").DataBodyRange(M) = CbxClient.Value
        .ListColumns("Référence Client").DataBodyRange(M) = TxtRefClient.Value
        .ListColumns("Pièce ou assemblage").DataBodyRange(M) = CbxTypeDePièce.Value
        .ListColumns("Matière").DataBodyRange(M) = CbxMatière.Value
        .ListColumns("Epaisseur ").DataBodyRange(M) = CDec(TxtEpaisseur.Value)

        'tri sur référence Lacour
        .Range.Sort Key1:=.ListColumns("Référence Lacour"), Order1:=xlAscending, Header:=xlYes

    End With

        TxtRefLacour.Value = ""
        TxtDésignationPièce.Value = ""
        CbxClient.Value = ""
        TxtRefClient.Value = ""
        CbxTypeDePièce.Value = ""
        CbxMatière.Value = ""
        TxtEpaisseur.Value = ""
End Sub

Bonjour et merci pour votre retour

Je débute en VBA et suis autodidacte donc pour tout vous dire vous me parlez un peu chinois!

J'ai fais le copier /Collé de votre code et cela marche

De plus par rapport à votre commentaire j'ai supprimé toutes les Rowsource que j'avais sur les combobox de la page "Page5CréationOutil"

Et ajouter ce code à l'ouverture du userforme

Private Sub UserForm_Initialize(Page5CréationOutil)
    Set lo = Worksheets("Source 1").Range("ListeGlobaleRefLacour").ListObject
    Me.CbxRefLacour.List = lo.ListColumns(1).DataBodyRange.Value
    Me.ComboBox2.List = lo.ListColumns(1).DataBodyRange.Value 
.......

Je vous joins le fichiers qui marche apparemment.

Encore merci

Slts

Ceci est suffisant et évite la référence à la feuille

Set lo = Range("ListeGlobaleRefLacour").ListObject

ou encore :

Set lo = [ListeGlobaleRefLacour].ListObject
Rechercher des sujets similaires à "methode value objet range echoue"