Gestion des données entre onglets
Bonjour à tous,
J'essaye d'intégrer diverses lignes de code pour gérer des données importées dans le fichier en pièce jointe mais cela fonctionne correctement de façon indépendante mais avec des anomalies dans la même macro.
Dans la macro liée au fichier, la dernière partie "import donnees fichier prepa bull"; n'ouvre pas le dossier demandé dans le chemin de la macro et ne referme pas le fichier d'origine des données mais le réduit.
Je souhaiterai comparer la valeur de chaque cellule de la colonne "E" de la cellule 9 à 500 de l'onglet "Samedi_Dimanche" à la colonne D de l'onglet "import_prepabull" et pour chaque correspondance, recopier la donnée de la cellule de la colonne G située sur la même ligne de cet onglet vers la cellule L située sur la même ligne que la cellule liée à la correspondance.
Mon fichier joint devrait finir d'éclaircir ce petit jonglage entre les cellules...
Merci pour votre aide et vos explications.
Bonsoir
Quelques petits éclaircissements
Tout ce qui est avant la partie ouverture fichier on ne s'en occupe pas ?
Pour ouvrir un fichier il faut que tu joignes le fichier en question
Pourquoi copier les colonnes dans le fichier, on peut faire la recherche directement dans le fichier ?
La partie importer pourrait ressembler à ça
Sub Importer()
Dim Fichier, Chemin As String
Dim J As Long
Dim Ws As Worksheet
Dim Cel As Range
Fichier = Application.GetOpenFilename
If Fichier = False Then
Exit Sub
End If
Application.ScreenUpdating = False
Set Ws = Sheets("Samedi_Dimanche")
With Workbooks.Open(Fichier)
With .Sheets(1)
For J = 9 To Ws.Range("E" & Rows.Count).End(xlUp).Row
Set Cel = .Columns("D").Find(what:=Ws.Range("E" & J), LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
Ws.Range("L" & J) = Cel.Offset(0, 3)
End If
Next J
End With
.Close savechanges:=False
End With
End SubBanzai64 a écrit :Bonsoir
Quelques petits éclaircissements
Tout ce qui est avant la partie ouverture fichier on ne s'en occupe pas ?
Pour ouvrir un fichier il faut que tu joignes le fichier en question
Pourquoi copier les colonnes dans le fichier, on peut faire la recherche directement dans le fichier ?
La partie importer pourrait ressembler à ça
Sub Importer() Dim Fichier, Chemin As String Dim J As Long Dim Ws As Worksheet Dim Cel As Range Fichier = Application.GetOpenFilename If Fichier = False Then Exit Sub End If Application.ScreenUpdating = False Set Ws = Sheets("Samedi_Dimanche") With Workbooks.Open(Fichier) With .Sheets(1) For J = 9 To Ws.Range("E" & Rows.Count).End(xlUp).Row Set Cel = .Columns("D").Find(what:=Ws.Range("E" & J), LookIn:=xlValues, lookat:=xlWhole) If Not Cel Is Nothing Then Ws.Range("L" & J) = Cel.Offset(0, 3) End If Next J End With .Close savechanges:=False End With End Sub
Bonjour Banzai64,
tout d'abord merci pour ta réactivité. La première partie de la macro fonctionne bien jusqu'à la partie concernée par l'"import données fichier prepa bull".
Je souhaite ouvrir le dossier pour choisir un fichier dans lequel je vais importer la feuille 1 dans le format de la feuille "import_prepabull" du fichier envoyé, chaque semaine le fichier ayant un nom différent mais sa configuration sera la même: feuil1-même mise en page.
La copie des colonnes de la feuille du fichier sélectionné permet également d'avoir dans un même fichier les infos à disposition.
J’espère que mes explications ont pu t'éclairer.
Cordialement
Bonjour
Version avec récupération des données
Option Explicit
Sub Importer()
Dim Fichier, Chemin As String
Dim J As Long
Dim Ws As Worksheet
Dim Cel As Range
Fichier = Application.GetOpenFilename
If Fichier = False Then
Exit Sub
End If
Application.ScreenUpdating = False
Set Ws = Sheets("Samedi_Dimanche")
With Workbooks.Open(Fichier)
.Sheets(1).Columns("A:H").Copy ThisWorkbook.Sheets("IMPORT_PREPABULL").Range("A1")
.Close savechanges:=False
End With
With Sheets("IMPORT_PREPABULL")
For J = 9 To Ws.Range("E" & Rows.Count).End(xlUp).Row
Set Cel = .Columns("D").Find(what:=Ws.Range("E" & J), LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
Ws.Range("L" & J) = Cel.Offset(0, 3)
End If
Next J
End With
End SubBonjour Banzai64,
un grand merci pour ton aide, j'ai intégré ce code dans ma feuille et cela fonctionne très bien. J'y ai apporté quelques modifications car j'ai du ajouter des colonnes, mais l'essentiel était là! Encore merci.