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 SubN'ayant pas eu de réponse, je clos.