Aide à la simplification d'une macro et msgBox à liste déroulante

Bonjour à toutes et à tous.

Je suis plutôt content de moi, car je suis parvenu à créer une macro me permettant d'aller chercher des données dans un fichier X ou Z et de les coller dans le fichier 01. Je précise que je me suis inspiré de deux macros présentées sur ce forum (mais je ne retrouve plus les liens).

Etant débutant en macro, j'ai volontairement mis du texte explicatif pour me repérer dans ma macro.

Mais, comme vous pouvez le constatez ci-dessous, la macro est plutôt... volumineuse. Je souhaiterais savoir s'il est possible de la réduire en termes de longueur.

Je précise qu'au travail, nous sommes sur Microsoft Office 2010. Du coup, je sais que toutes les fonctionnalités ne sont pas accessibles...

Comme vous pouvez également le constater, il y a une saisie manuelle du nom du fournisseur. Avec des risques d'erreur de frappe (d'où la dernière instruction if qui renvoie à la inputBox initiale).

Existe-t-il un moyen de de réaliser une msgBox présentant la liste des fournisseurs, qu'il n'y ait plus qu'à sélectionner?

Si oui, est-il possible d'aller chercher la liste sur une feuille du fichier que l'on peu actualiser selon notre bon vouloir (ajout d'un fournisseur, suppression d'un fournisseur,...)?

Vous remerciant par avance pour le temps passé à répondre à mes interrogations!!

Sub Copier()

    Dim Fichier As String

    'Acceleration du traitement des données
    Application.ScreenUpdating = False

    'Ouverture fenêtre de selection du fichier d'entrée
    Fichier = Application.GetOpenFilename

    Workbooks.Open Filename:=Fichier

    'supprime le chemin
    Fichier = Dir(Fichier)

Line1:

    'détermination du fournisseur à insérer
    nom = InputBox("Quel est le fournisseur (en majuscule) ?")

    'Copie données fichier d'entrée vers fichier de sortie en fonction du fournisseur indiqué

    'Si FRN1
    If nom = "FRN1" Then
        'Copie à partir de I4
        Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("I4")
    'Sinon
    Else
        'Si FRN2'
        If nom = "FRN2" Then
            'copie à insérer à partir de N4
            Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("N4")
        'Sinon
        Else

            'Si FRN3
            If nom = "FRN3" Then
                'copie à insérer à partir de S4
                Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("S4")
            'Sinon
            Else

                'Si FRN4
                If nom = "FRN4" Then
                    'copie à insérer à partir de X4
                    Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("X4")
                'Sinon
                Else

                    'Si FRN5
                    If nom = "FRN5" Then
                        'copie à insérer à partir de AC4
                        Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("AC4")

                    'Sinon
                    Else

                        'Si FRN6
                        If nom = "FRN6" Then
                            'copie à insérer à partir de AH4
                            Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("AH4")

                        'Sinon
                        Else

                            'Si FRN7
                            If nom = "FRN7" Then
                                'copie à insérer à partir de AM4
                                Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("AM4")

                            'Sinon
                            Else

                                'Si FRN8
                                If nom = "FRN8" Then
                                    'copie à insérer à partir de AR4
                                    Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("AR4")

                                'Sinon
                                Else

                                    'Si FRN9
                                    If nom = "FRN9" Then
                                        'copie à insérer à partir AW4
                                        Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("AW4")

                                    'Sinon
                                    Else

                                        'Si FRN10
                                        If nom = "FRN10" Then
                                            'copie à insérer à partir de BB4
                                            Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("BB4")

                                        'Sinon
                                        Else

                                            'Si FRN11
                                            If nom = "FRN11" Then
                                                'copie à insérer à partir de BG4
                                                Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("BG4")

                                            'Sinon
                                            Else

                                                'Si FRN12
                                                If nom = "FRN12" Then
                                                    'copie à insérer à partir de BL4
                                                    Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("BL4")

                                                'Sinon
                                                Else

                                                    'Si FRN13
                                                    If nom = "FRN13" Then
                                                        'copie à insérer à partir de BQ4
                                                        Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("BQ4")

                                                    'Sinon
                                                    Else

                                                        'Si FRN14
                                                        If nom = "FRN14" Then
                                                            'copie à insérer à partir de BV4
                                                            Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("BV4")

                                                        'Sinon
                                                        Else

                                                            'Si FRN15
                                                            If nom = "FRN15" Then
                                                                'copie à insérer à partir de CA4
                                                                Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("CA4")

                                                            'Sinon
                                                            Else

                                                                'Si FRN16
                                                                If nom = "FRN16" Then
                                                                    'copie à insérer à partir de CF4
                                                                    Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("CF4")

                                                                'Sinon
                                                                Else

                                                                    'Si FRN17
                                                                    If nom = "17" Then
                                                                        'copie à insérer à partir de CK4
                                                                        Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("CK4")

                                                                    'Sinon
                                                                    Else

                                                                        'Si FRN18
                                                                        If nom = "FRN18" Then
                                                                            'copie à insérer à partir de CP4
                                                                            Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("CP4")

                                                                        'Sinon
                                                                        Else

                                                                            'Si FRN19
                                                                            If nom = "FRN19" Then
                                                                                'copie à insérer à partir de CU4
                                                                                Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("CU4")

                                                                            'Sinon
                                                                            Else

                                                                                'Si FRN20
                                                                                If nom = "FRN20" Then
                                                                                    'copie à insérer à partir de CZ4
                                                                                    Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("CZ4")

                                                                                'Sinon
                                                                                Else

                                                                                    'Si FRN21
                                                                                    If nom = "FRN21" Then
                                                                                        'copie à insérer à partir de DE4
                                                                                        Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("DE4")

                                                                                    'Sinon
                                                                                    Else

                                                                                        'Si FRN22
                                                                                        If nom = "FRN22" Then
                                                                                            'copie à insérer à partir de DJ4
                                                                                            Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("DJ4")

                                                                                        'Sinon
                                                                                        Else

                                                                                            'Si FRN23
                                                                                            If nom = "FRN23" Then
                                                                                                'copie à insérer à partir de DO4
                                                                                                Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("DO4")

                                                                                            'Sinon
                                                                                            Else

                                                                                                'Si FRN24
                                                                                                If nom = "FRN24" Then
                                                                                                    'copie à insérer à partir de DT4
                                                                                                    Range("G4:J200").Copy ThisWorkbook.Sheets(5).Range("DT4")

                                                                                                'Sinon
                                                                                                Else

                                                                                                    'Si aucun des noms pré-enregistrés
                                                                                                    MsgBox "Le Fournisseur n'est pas renseigné ou mal orthographié"""
                                                                                                    MsgBox "Ctrl + Pause pour interrompre la macro."
                                                                                                    GoTo Line1
                                                                                                End If
                                                                                            End If
                                                                                        End If
                                                                                    End If
                                                                                End If
                                                                            End If
                                                                        End If
                                                                    End If
                                                                End If
                                                            End If
                                                        End If
                                                    End If
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If

    'Fermeture du classeur
    ActiveWorkbook.Close

    'Confirmation de l'exportation
    MsgBox "exportation des données réussite"

End Sub

N'ayant pas eu de réponse, je clos.

Rechercher des sujets similaires à "aide simplification macro msgbox liste deroulante"