Importation de données avec VBA
Bonjour à tous,
Je suis novice avec VBA et je travaille sur un fichier qui me permettra de combiner des données exportées de mon logiciel, pour me faciliter le pilotage de mon activité professionnelle.
Mon fichier de pilotage sera celui-ci :
Dans un premier temps, j'aimerais que, automatiquement, VBA m'exporte les données d'un tableau lui-même exporté de mon logiciel, qui prend cette forme :
Voici ci-dessous le code que j'ai sur VBA :
Sub Exporter_entretien()
Dim fichier_pilotage As String
fichier_pilotage = ThisWorkbook.Name
Dim fichier_entretien As String
fichier_entretien = "Table des bons d'entretien.xlsx"
Dim chemin_or As String
chemin_or = "Y:\05 - COMMUN\Fichier PDF pour envoi\Table des bons d'entretien.xlsx"
Dim chemin_pilotage As String
chemin_pilotage = "C:\Users\DONNEESCONFIDENTIEL\Desktop\Test_Pilotage.xlsm"
Dim dernierLigne As Integer
Dim information As String
Workbooks.Open chemin_or
derniereLigne = Cells(Rows.Count, 7).End(xlUp).Row
information = Cells(2,"B"),Cells(dernierLigne,"G")
Workbooks.Open chemin_pilotage
Range("B9" & dernierLigne).Value = information
Workbooks(fichier_entretien).Close savechanges:=True
Workbooks(fichier_pilotage).Activate
MsgBox "Importation effectuée."
End SubLe code fonctionnait bien mais rien ne se copiait sur mon fichier de pilotage.
J'ai essayé de trouver mais je bloque toujours sur la partie :
Workbooks.Open chemin_or
derniereLigne = Cells(Rows.Count, 7).End(xlUp).Row
information = Cells(2,"B"),Cells(dernierLigne,"G")Est-ce que mon problème ne vient que de cette partie là ou le restant de mon code est-il erroné ?
Merci par avance !
Bonjour vaesinea, le forum,
Il faut peut-être préciser sur quelles feuilles tu agis...
Et:
Dim information
information = Range(Cells(2, "B"), Cells(dernierLigne, "G"))...
Range("B" & dernierLigne).Resize(UBound(information, 1), UBound(information, 2)) = informationDifficile sans fichier....
Cordialement,
Bonjour !
Merci pour ta réponse !
Je ne sais pas quel grand hasard, j'ai trouvé la solution à mon problème, ci-dessous mon code :
Sub Exporter_entretien()
Dim fichier_pilotage As String 'Déclaration
fichier_pilotage = ThisWorkbook.Name 'Nomme le fichier Pilotage = fichier_pilotage
Dim fichier_entretien As String 'Déclaration
fichier_entretien = "Table des bons d'entretien.xlsx" 'Nomme le fichier OR = fichier_entretien
Dim chemin_or As String 'Déclaration
chemin_or = "Y:\05 - COMMUN\Fichier PDF pour envoi\Table des bons d'entretien.xlsx" 'Nomme le chemin pour accéder au fichier des OR
Dim chemin_pilotage As String 'Déclaration
chemin_pilotage = "C:\Users\secreteriat\Desktop\Test_Pilotage.xlsm" 'Nomme le chemin pour accéder au fichier de pilotage
Dim derniereLigne_OR As Integer 'Déclaration
Dim derniereLigne_Pilotage As Integer 'Déclaration
Dim information 'Déclaration
Dim I As Integer 'Déclaration
Workbooks.Open chemin_or 'Ouvre le fichier OR via le chemin
Columns(4).Delete 'Supprime la colonne D "prévue le"
derniereLigne_OR = Cells(Rows.Count, 6).End(xlUp).Row 'Détermine la valeur de la dernière ligne dans le fichier des OR
information = Range(Cells(2, "B"), Cells(derniereLigne_OR, "F")) 'Détermine les valeurs à copier (cellule B2 jusqu'à la dernière ligne)
Workbooks.Open chemin_pilotage 'Ouvre le fichier de pilotage via le chemin
derniereLigne_Pilotage = Cells(Rows.Count, 6).End(xlUp).Row 'Détermine la valeur de la dernière ligne dans le fichier de pilotage
Range(Cells(derniereLigne_Pilotage + 1, "B"), Cells(derniereLigne_OR + derniereLigne_Pilotage - 1, "F")) = information 'Copie les informations sur le fichier pilotage
Workbooks(fichier_entretien).Close SaveChanges:=False 'Ferme le fichier des OR sans sauvegarder
Workbooks(fichier_pilotage).Activate 'Ouvre le fichier de pilotage
Range(Cells(8, "A"), Cells(derniereLigne_Pilotage + derniereLigne_OR - 1, "L")).RemoveDuplicates Columns:=2, Header:=xlNo 'Efface les doublons
'Range(Cells(8, "A"), Cells(derniereLigne_Pilotage + derniereLigne_OR - 1, "L")).Sort Key1:=Range("A8"), Header:=xlNo 'Tri les priorités
Range(Cells(8, "A"), Cells(derniereLigne_Pilotage + derniereLigne_OR - 1, "L")).Sort Key1:=Range("A8"), Key2:=Range("D8"), Header:=xlNo, Order1:=xlAscending
MsgBox "Importation effectuée." 'Message d'informations
End Sub