VBA - Regrouper données des classeurs en 1

Résolu/Fermé
sebohl - 14 mars 2018 à 14:23
 sebohl - 15 mars 2018 à 13:33
Bonjour,

J'ai besoin d'aide car aujourd'hui, j'ai une macro vba transfert qui marche bien mais je souhaite la modifier pour que cela soit plus simple.
Aujourd'hui, je lance ma macro et je choisi sur mon disque un fichier (le chemin peut varier) et cela récupère sur les différents onglets de ce classeur les informations souhaitées pour les mettre dans mon fichier excel ouvert sous l'onglet bilan.
Maintenant, je voudrai faire la même chose en pouvant sélectionner n fichiers simultanément et que l'importation est lieu pour les n fichiers en une fois.

Voici dessous ma macro tranfert:

Sub TRANSFERT()
' Déclaration des variables
Dim i As Integer

cheminfichier = Application.GetOpenFilename("Fichiers Excels (*.xlsx), *.xls")
' Si on clique sur Annuler dans la fenêtre, on sort de la boucle
If cheminfichier <> False Then
'Ouverture du classeur source
Workbooks.Open cheminfichier
' Récupération du nom du classeur + extension
For i = Len(cheminfichier) To 1 Step -1
If Mid(cheminfichier, i, 1) = "\" Then Exit For
Next
nomfichier = Mid(cheminfichier, i + 1, Len(cheminfichier))
colone = 3
ligne = 1
compteur = 1
If ThisWorkbook.Sheets("Bilan").Cells(2, colone).Value = "" Then
ThisWorkbook.Activate
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Compound"
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Deshy"
ThisWorkbook.Sheets("Bilan").Columns(colone).ColumnWidth = 25
ThisWorkbook.Sheets("Bilan").Cells(1, colone) = compteur
ThisWorkbook.Sheets("Bilan").Cells(2, colone) = Workbooks(nomfichier).Sheets("Description").Range("C2").Value
ThisWorkbook.Sheets("Bilan").Cells(3, colone) = Workbooks(nomfichier).Sheets("Description").Range("E9").Value
ThisWorkbook.Sheets("Bilan").Cells(4, colone).Interior.ColorIndex = 1
ThisWorkbook.Sheets("Bilan").Cells(8, colone) = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("V81").Value
ThisWorkbook.Sheets("Bilan").Cells(9, colone) = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("V81").Value
ThisWorkbook.Sheets("Bilan").Cells(10, colone) = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("V81").Value
ThisWorkbook.Sheets("Bilan").Cells(16, colone).Interior.ColorIndex = 1
ThisWorkbook.Sheets("Bilan").Cells(17, colone).Interior.ColorIndex = 27
ThisWorkbook.Sheets("Bilan").Cells(18, colone) = Workbooks(nomfichier).Sheets("Description").Range("C17").Value
ThisWorkbook.Sheets("Bilan").Cells(19, colone).Interior.ColorIndex = 27
ThisWorkbook.Sheets("Bilan").Cells(20, colone).Interior.ColorIndex = 27
ThisWorkbook.Sheets("Bilan").Cells(21, colone).Interior.ColorIndex = 1
ThisWorkbook.Sheets("Bilan").Cells(24, colone).Interior.ColorIndex = 1

ThisWorkbook.Sheets("Compound").Cells(1, 3) = "Compound"
ThisWorkbook.Sheets("Compound").Columns(4).ColumnWidth = 23
ThisWorkbook.Sheets("Compound").Columns(4).Font.Bold = True
ThisWorkbook.Sheets("Compound").Columns(5).Font.Bold = True
ThisWorkbook.Sheets("Compound").Cells(1, 4) = Workbooks(nomfichier).Sheets("Description").Range("C2").Value
ThisWorkbook.Sheets("Compound").Cells(1, 5) = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("AE31").Value
ThisWorkbook.Sheets("Compound").Range("F1:W1") = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("E33:V33").Value
ThisWorkbook.Sheets("Compound").Range("F2:W2") = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("E81:V81").Value
ThisWorkbook.Sheets("Compound").Cells(1, 24) = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("AE31").Value
ThisWorkbook.Sheets("Compound").Columns(24).Font.Bold = True
ThisWorkbook.Sheets("Compound").Range("Y1:AP1") = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("E33:V33").Value
ThisWorkbook.Sheets("Compound").Range("Y2:AP2") = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("E81:V81").Value
ThisWorkbook.Sheets("Compound").Cells(1, 43) = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("AE31").Value
ThisWorkbook.Sheets("Compound").Columns(43).Font.Bold = True
ThisWorkbook.Sheets("Compound").Range("AR1:BI1") = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("E33:V33").Value
ThisWorkbook.Sheets("Compound").Range("AR2:BI2") = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("E81:V81").Value
ThisWorkbook.Sheets("Compound").Range("F1:BI1").NumberFormat = "0.0"
ThisWorkbook.Sheets("Compound").Range("F2:BI2").NumberFormat = "0.00%"

ThisWorkbook.Sheets("Deshy").Cells(1, 3) = "Deshy"
ThisWorkbook.Sheets("Deshy").Columns(4).ColumnWidth = 23
ThisWorkbook.Sheets("Deshy").Columns(4).Font.Bold = True
ThisWorkbook.Sheets("Deshy").Columns(5).Font.Bold = True
ThisWorkbook.Sheets("Deshy").Cells(1, 4) = Workbooks(nomfichier).Sheets("Description").Range("C2").Value
ThisWorkbook.Sheets("Deshy").Cells(1, 5) = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("AE31").Value
ThisWorkbook.Sheets("Deshy").Range("F1:W1") = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("E33:V33").Value
ThisWorkbook.Sheets("Deshy").Range("F2:W2") = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("E174:V174").Value
ThisWorkbook.Sheets("Deshy").Cells(1, 24) = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("AE31").Value
ThisWorkbook.Sheets("Deshy").Columns(24).Font.Bold = True
ThisWorkbook.Sheets("Deshy").Range("Y1:AP1") = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("E33:V33").Value
ThisWorkbook.Sheets("Deshy").Range("Y2:AP2") = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("E174:V174").Value
ThisWorkbook.Sheets("Deshy").Cells(1, 43) = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("AE31").Value
ThisWorkbook.Sheets("Deshy").Columns(43).Font.Bold = True
ThisWorkbook.Sheets("Deshy").Range("AR1:BI1") = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("E33:V33").Value
ThisWorkbook.Sheets("Deshy").Range("AR2:BI2") = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("E174:V174").Value
ThisWorkbook.Sheets("Deshy").Range("F1:BI1").NumberFormat = "0.0"
ThisWorkbook.Sheets("Deshy").Range("F2:BI2").NumberFormat = "0.00%"

ThisWorkbook.Sheets("Bilan").Activate

' Fermeture du classeur source
Workbooks(nomfichier).Close
' Entrée des inputs
x = Application.InputBox("Entrez le taux de charge cible")
ThisWorkbook.Sheets("Bilan").Cells(5, colone) = x
y = Application.InputBox("Entrez la spécification fournisseur (Standard: 1,5%)")
ThisWorkbook.Sheets("Bilan").Cells(26, colone) = y
Z = Application.InputBox("Entrez la spécification client (Standard: 3%)")
ThisWorkbook.Sheets("Bilan").Cells(27, colone) = Z
Else
Do While ThisWorkbook.Sheets("Bilan").Cells(2, colone).Value <> ""
colone = colone + 1
ligne = ligne + 2
Loop
ThisWorkbook.Sheets("Bilan").Columns(colone).ColumnWidth = 25
ThisWorkbook.Sheets("Bilan").Cells(1, colone) = colone - 2
ThisWorkbook.Sheets("Bilan").Cells(2, colone) = Workbooks(nomfichier).Sheets("Description").Range("C2").Value
ThisWorkbook.Sheets("Bilan").Cells(3, colone) = Workbooks(nomfichier).Sheets("Description").Range("E9").Value
ThisWorkbook.Sheets("Bilan").Cells(4, colone).Interior.ColorIndex = 1
ThisWorkbook.Sheets("Bilan").Cells(8, colone) = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("V81").Value
ThisWorkbook.Sheets("Bilan").Cells(9, colone) = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("V81").Value
ThisWorkbook.Sheets("Bilan").Cells(10, colone) = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("V81").Value
ThisWorkbook.Sheets("Bilan").Cells(16, colone).Interior.ColorIndex = 1
ThisWorkbook.Sheets("Bilan").Cells(17, colone).Interior.ColorIndex = 27
ThisWorkbook.Sheets("Bilan").Cells(18, colone) = Workbooks(nomfichier).Sheets("Description").Range("C17").Value
ThisWorkbook.Sheets("Bilan").Cells(19, colone).Interior.ColorIndex = 27
ThisWorkbook.Sheets("Bilan").Cells(20, colone).Interior.ColorIndex = 27
ThisWorkbook.Sheets("Bilan").Cells(21, colone).Interior.ColorIndex = 1
ThisWorkbook.Sheets("Bilan").Cells(24, colone).Interior.ColorIndex = 1

ThisWorkbook.Sheets("Compound").Cells(1, 3) = "Compound"
ThisWorkbook.Sheets("Compound").Columns(4).ColumnWidth = 23
ThisWorkbook.Sheets("Compound").Columns(4).Font.Bold = True
ThisWorkbook.Sheets("Compound").Columns(5).Font.Bold = True
ThisWorkbook.Sheets("Compound").Cells(ligne, 4) = Workbooks(nomfichier).Sheets("Description").Range("C2").Value
ThisWorkbook.Sheets("Compound").Cells(ligne, 5) = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("AE31").Value
ThisWorkbook.Sheets("Compound").Range("F" & ligne & ":W" & ligne) = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("E33:V33").Value
ThisWorkbook.Sheets("Compound").Range("F" & 1 + ligne & ":W" & 1 + ligne) = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("E81:V81").Value
ThisWorkbook.Sheets("Compound").Cells(ligne, 24) = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("AE31").Value
ThisWorkbook.Sheets("Compound").Columns(24).Font.Bold = True
ThisWorkbook.Sheets("Compound").Range("Y" & ligne & ":AP" & ligne) = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("E33:V33").Value
ThisWorkbook.Sheets("Compound").Range("Y" & 1 + ligne & ":AP" & 1 + ligne) = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("E81:V81").Value
ThisWorkbook.Sheets("Compound").Cells(ligne, 43) = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("AE31").Value
ThisWorkbook.Sheets("Compound").Columns(43).Font.Bold = True
ThisWorkbook.Sheets("Compound").Range("AR" & ligne & ":BI" & ligne) = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("E33:V33").Value
ThisWorkbook.Sheets("Compound").Range("AR" & 1 + ligne & ":BI" & 1 + ligne) = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("E81:V81").Value
ThisWorkbook.Sheets("Compound").Range("F" & ligne & ":BI" & ligne).NumberFormat = "0.0"
ThisWorkbook.Sheets("Compound").Range("F" & 1 + ligne & ":BI" & 1 + ligne).NumberFormat = "0.00%"

ThisWorkbook.Sheets("Deshy").Cells(1, 3) = "Deshy"
ThisWorkbook.Sheets("Deshy").Columns(4).ColumnWidth = 23
ThisWorkbook.Sheets("Deshy").Columns(4).Font.Bold = True
ThisWorkbook.Sheets("Deshy").Columns(5).Font.Bold = True
ThisWorkbook.Sheets("Deshy").Cells(ligne, 4) = Workbooks(nomfichier).Sheets("Description").Range("C2").Value
ThisWorkbook.Sheets("Deshy").Cells(ligne, 5) = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("AE31").Value
ThisWorkbook.Sheets("Deshy").Range("F" & ligne & ":W" & ligne) = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("E33:V33").Value
ThisWorkbook.Sheets("Deshy").Range("F" & 1 + ligne & ":W" & 1 + ligne) = Workbooks(nomfichier).Sheets("25°C 80%rH").Range("E174:V174").Value
ThisWorkbook.Sheets("Deshy").Cells(ligne, 24) = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("AE31").Value
ThisWorkbook.Sheets("Deshy").Columns(24).Font.Bold = True
ThisWorkbook.Sheets("Deshy").Range("Y" & ligne & ":AP" & ligne) = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("E33:V33").Value
ThisWorkbook.Sheets("Deshy").Range("Y" & 1 + ligne & ":AP" & 1 + ligne) = Workbooks(nomfichier).Sheets("30°C 65%rH").Range("E174:V174").Value
ThisWorkbook.Sheets("Deshy").Cells(ligne, 43) = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("AE31").Value
ThisWorkbook.Sheets("Deshy").Columns(43).Font.Bold = True
ThisWorkbook.Sheets("Deshy").Range("AR" & ligne & ":BI" & ligne) = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("E33:V33").Value
ThisWorkbook.Sheets("Deshy").Range("AR" & 1 + ligne & ":BI" & 1 + ligne) = Workbooks(nomfichier).Sheets("40°C 75%rH ").Range("E174:V174").Value
ThisWorkbook.Sheets("Deshy").Range("F" & ligne & ":BI" & ligne).NumberFormat = "0.0"
ThisWorkbook.Sheets("Deshy").Range("F" & 1 + ligne & ":BI" & 1 + ligne).NumberFormat = "0.00%"

' Fermeture du classeur source
Workbooks(nomfichier).Close
' Entrée des inputs
x = Application.InputBox("Entrez le taux de charge cible")
ThisWorkbook.Sheets("Bilan").Cells(5, colone) = x
y = Application.InputBox("Entrez la spécification fournisseur (Standard: 1,5%)")
ThisWorkbook.Sheets("Bilan").Cells(26, colone) = y
Z = Application.InputBox("Entrez la spécification client (Standard: 3%)")
ThisWorkbook.Sheets("Bilan").Cells(27, colone) = Z
End If
End If
'masque les feuilles de data deshy et compound si elles existe
NomFeuille = "Compound"
If FeuilleExiste(NomFeuille) Then
On Error Resume Next
Application.DisplayAlerts = False
ThisWorkbook.Sheets(NomFeuille).Visible = 0
Application.DisplayAlerts = True
End If
NomFeuille = "deshy"
If FeuilleExiste(NomFeuille) Then
On Error Resume Next
Application.DisplayAlerts = False
ThisWorkbook.Sheets(NomFeuille).Visible = 0
Application.DisplayAlerts = True
End If
End Sub


Merci pour votre aide

Ah oui, je suis novice en VB donc il y a peut etre dans lourdeurs dans cette macro mais je découvre au fur et à mesure

Sébastien

1 réponse

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
14 mars 2018 à 21:38
bonsoir, que veux-tu dire précisément par "sélectionner n fichiers simultanément"?
souhaites-tu simplement pouvoir sélectionner plusieurs fichiers (se trouvant dans le même dossier) dans la boite de dialogue?
ou bien souhaites-tu pouvoir faire autre chose?
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 14 mars 2018 à 21:56
si j'ai bien deviné, suggestion:
option explicit
Sub TRANSFERT() 
' Déclaration des variables 
Dim chemins, cheminfichier 

chemins = Application.GetOpenFilename("Fichiers Excels (*.xlsx), *.xls", , , , True) 
If IsArray(chemins) Then
    For Each cheminfichier In chemins

         'Ouverture du classeur source 
         Workbooks.Open cheminfichier 
            '
        ' ...
        '
    Next cheminfichier 
End If
End Sub 
0
Salut,

Merci beaucoup pour ta réponse, ça marche nickel

Je peux continuer à optimiser mon prog
0