Erreur '9' lors du lancement de ma macro après duplication du fichier Excel

Bonjour à tous,

C'est ma première fois dans un forum, je vais donc faire de mon mieux pour être clair et concis.

La macro concernée affiche un UserForm :

Sub Bouton20_Cliquer()
UserForm3.Show
End Sub

Que ce soit pour cet affichage ou pour le code associé au UserForm3, tout fonctionnait bien jusqu'à ce que je duplique le fichier Excel. Maintenant, lorsque je lance cette macro depuis le fichier initial j'obtiens une erreur '9'. Cependant, lorsque je lance cette macro depuis le nouveau fichier, elle fonctionne parfaitement bien.

Comment faire pour que cette macro fonctionne depuis le fichier initial ?

Merci d'avance pour votre aide, je suis bien bloqué...

PS : Ci-dessous le code du UserForm3 :

13code-userform3.txt (7.89 Ko)

Bonjour et bienvenue sur ce forum,

Quel est votre version excel ?
Mettez votre profil de compte à jour avec votre version plutôt que Français (xlsb ???) qui n'aide pas celui qui doit vous répondre.

Pour la trouver sous Windows :---> menu Fichier > Compte (en bas) + Clic sur le point d'interrogation puis sur la page suivante au-dessus vous trouvez votre version
Pour la trouver sous MAC : une fois Excel ouvert, cliquez sur l'icône Pomme en haut à gauche puis à "A propos de " Si vous êtes sous MAC ajoutez l'info avec votre version.


tout fonctionnait bien jusqu'à ce que je duplique le fichier Excel.

Pour votre question, regardez déjà si les noms "BOM" et "Nom Domaine" pointent toujours sur le bon fichier et la bonne feuille

Crdlt

Hello,

si je peux me permettre, quelques conseils...

- ComboBox... ou TextBox... suivi d'un numéro sont des noms trop génériques pour se rappeler à quoi ils servent, rien ne vous empêche de les renommer

- For Each cell In ThisWorkbook.Sheets("QryNomenclatureComplete").Range("F:F") boucle sur TOUTES les cellules de la colonne F, cad pour les versions pas trop anciennes 1 048 576 lignes !!! Je doute que votre classeur soit rempli à ce point. A contrario For Each cellb In ThisWorkbook.Sheets("QryNomenclatureComplete").Range("BOM[REFERENCE]") cette boucle est limité au contenu du nom (il faut juste espérer que le nom n'est pas une colonne entière )

- au lieu de répéter N fois ThisWorkbook.Sheets("QryNomenclatureComplete") vous pouvez écrire With ThisWorkbook.Sheets("QryNomenclatureComplete") et End With et entre les deux simplifier vos références en supprimant ThisWorkbook.Sheets("QryNomenclatureComplete") mais en gardant le point "."

    With ThisWorkbook.Sheets("QryNomenclatureComplete")

        ' Trouver la cellule correspondant à  la valeur sélectionnée dans ComboBox5
        Set foundCell = ThisWorkbook.Sheets("QryNomenclatureComplete").Range("BOM[REFERENCE]").Find(What:=ComboBox5.Value, LookIn:=xlValues, LookAt:=xlWhole)

        If Not foundCell Is Nothing Then
            Rowselected = foundCell.Row ' Stocker le numéro de ligne globalement

            ' Afficher un message avec le numéro de ligne
            'MsgBox "Numéro de ligne sélectionnée : " & Rowselected

            ' Remplir les TextBox avec les valeurs correspondantes
            TextBox1.Value = .Range("BOM[Avancement]").Cells(Rowselected - 10, 1).Value
            TextBox2.Value = .Range("BOM[Commentaire]").Cells(Rowselected - 10, 1).Value
            TextBox3.Value = .Range("BOM[Coefficient]").Cells(Rowselected - 10, 1).Value
            TextBox4.Value = .Range("BOM[Définition CAO dans DMU]").Cells(Rowselected - 10, 1).Value
            TextBox5.Value = .Range("BOM[Robustesse conception]").Cells(Rowselected - 10, 1).Value
            TextBox6.Value = .Range("BOM[Validation calcul ]").Cells(Rowselected - 10, 1).Value
            TextBox7.Value = .Range("BOM[Validation Implantation avec métiers partenaires ]").Cells(Rowselected - 10, 1).Value
            TextBox8.Value = .Range("BOM[Index]").Cells(Rowselected - 10, 1).Value
            TextBox9.Value = .Range("BOM[Ind.]").Cells(Rowselected - 10, 1).Value
            TextBox10.Value = .Range("BOM[DesignationFrance]").Cells(Rowselected - 10, 1).Value
        Else
            MsgBox "Valeur non trouvée dans la colonne REFERENCE."
        End If

    End With

Bonjour,

et pour éviter de faire 10 fois la soustraction des -10 lignes : Rowselected = foundCell.Row -10 ' Stocker le numéro de ligne globalement
puis : TextBox1.Value = .Range("BOM[Avancement]").Cells(Rowselected, 1).Value

Après je n'ai pas regardé votre fichier TXT avec le code VBA...

Et pour peu que la textbox1 correspond à la colonne X de votre tableau BOM et que le textbox2 correspond à la colonne X+1 etc... Alors une boucle avec l'instruction CONTROLS permet de simplifier le code :

Sub test()
    With ThisWorkbook.Sheets("QryNomenclatureComplete")
        ' Trouver la cellule correspondant à  la valeur sélectionnée dans ComboBox5
        Set foundCell = ThisWorkbook.Sheets("QryNomenclatureComplete").Range("BOM[REFERENCE]").Find(What:=ComboBox5.Value, LookIn:=xlValues, LookAt:=xlWhole)
        If Not foundCell Is Nothing Then
            rowselected = foundCell.Row - 10 ' Stocker le numéro de ligne globalement
            col1 = 1 ' numéro de la colonne correspondant à TextBox1
            For i = 1 To 10
                Controls("TextBox" & i).Value = .Range("BOM").Range.Cells(rowselected, Col1 + (i - 1)).Value
            Next i
        Else
            MsgBox "Valeur non trouvée dans la colonne REFERENCE."
        End If
    End With
End Sub

ou un truc comme cela, je ne maîtrise pas à 100% les références sous VBA des tableaux structurés...

@ bientôt

LouReeD

Bonjour merci pour ces réponses !

- Dan, en effet, la solution se trouvait là... Après changement de nom, REFERENCE n'était plus valide. Je l'ai remplacé et il n'y avait plus d'erreur.

- Nain porte koi et LouReeD, en effet, ça permettra d'alléger énormément le code. Je prends en compte vos commentaires, fais ces essais et vous redis si ça fonctionne comme il faut.

Merci grandement :)

Re

@Dov Sultan :
vous avez corrigé votre version en mettant 2407 mais ce n'est pas cela qui importe mais Excel 2016, 2019, 2021...
exemple ci-dessous avec Excel 2016:

image
Rechercher des sujets similaires à "erreur lors lancement macro duplication fichier"