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 :

capture d ecran 2024 02 27 110627

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 :

capture d ecran 2024 02 27 110812

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 Sub

Le 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)) = information

Difficile 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
Rechercher des sujets similaires à "importation donnees vba"