Récupérer des données d'un excel à un autre
BAKIdu17
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
danielc0 Messages postés 2187 Date d'inscription Statut Membre Dernière intervention -
danielc0 Messages postés 2187 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
Je souhaite récupérer des données d'un excel à un autre.
Pour cela quelqu'un m'a aider pour un programme macro avec bouton.
je vais vous le mettre mais j'ai un code erreur pouvez-vous m'aider à résoudre le problème ?
Le but de cette macro est de récupérer des données d'un autre excel par rapport à une colonne en particulier. Soit il modifie la ligne lorsque qu'elle change soit il ajoute la ligne lorsqu'elle n'existe pas.
Merci d'avance.
Sub traiter()
Dim bb, a&, i&, n&, cc, fin&, d&, col&
With Feuil1
bb = .Range("A2:AP" & .Range("A" & Rows.Count).End(3).Row)
End With
ReDim cc(1 To UBound(aa), 1 To UBound(aa, 2))
For i = 1 To UBound(aa)
For a = 1 To UBound(bb)
If aa(i, 1) = bb(a, 1) Then
For col = 3 To UBound(bb, 2)
If aa(i, col) <> bb(a, col) Then bb(a, col) = aa(i, col)
Next col
GoTo 1
End If
Next a
n = n + 1
For d = 1 To UBound(bb, 2)
cc(n, d) = aa(i, d)
Next d
cc(n, 2) = cc(n, 3) & "-" & cc(n, 4) & "-" & cc(n, 5) & "-" & cc(n, 8) & "-" & cc(n, 9) & "-" & cc(n, 11)
1 Next i
With Feuil1
.Cells(3, 1).Resize(UBound(bb), UBound(bb, 2)).FormulaLocal = bb
fin = .Range("A" & Rows.Count).End(3).Row + 1
.Cells(fin, 1) = 1
.Cells(fin, 1).Resize(UBound(cc), UBound(cc, 2)).FormulaLocal = cc( la ligne en erreur)
Call test
End With
End Sub
BAKIdu17
Je souhaite récupérer des données d'un excel à un autre.
Pour cela quelqu'un m'a aider pour un programme macro avec bouton.
je vais vous le mettre mais j'ai un code erreur pouvez-vous m'aider à résoudre le problème ?
Le but de cette macro est de récupérer des données d'un autre excel par rapport à une colonne en particulier. Soit il modifie la ligne lorsque qu'elle change soit il ajoute la ligne lorsqu'elle n'existe pas.
Merci d'avance.
Sub traiter()
Dim bb, a&, i&, n&, cc, fin&, d&, col&
With Feuil1
bb = .Range("A2:AP" & .Range("A" & Rows.Count).End(3).Row)
End With
ReDim cc(1 To UBound(aa), 1 To UBound(aa, 2))
For i = 1 To UBound(aa)
For a = 1 To UBound(bb)
If aa(i, 1) = bb(a, 1) Then
For col = 3 To UBound(bb, 2)
If aa(i, col) <> bb(a, col) Then bb(a, col) = aa(i, col)
Next col
GoTo 1
End If
Next a
n = n + 1
For d = 1 To UBound(bb, 2)
cc(n, d) = aa(i, d)
Next d
cc(n, 2) = cc(n, 3) & "-" & cc(n, 4) & "-" & cc(n, 5) & "-" & cc(n, 8) & "-" & cc(n, 9) & "-" & cc(n, 11)
1 Next i
With Feuil1
.Cells(3, 1).Resize(UBound(bb), UBound(bb, 2)).FormulaLocal = bb
fin = .Range("A" & Rows.Count).End(3).Row + 1
.Cells(fin, 1) = 1
.Cells(fin, 1).Resize(UBound(cc), UBound(cc, 2)).FormulaLocal = cc( la ligne en erreur)
Call test
End With
End Sub
BAKIdu17
1 réponse
-
Bonjour,
C'est sûr que ça ne peut pas fonctionner, mais pour corriger le code, il faudrait que tu postes un lien sur chaque classeur. Regarde cette page :
https://mon-partage.fr/help-comment-partager-fichier/
Daniel-
-
-
Bonjour Daniel,
Voici les fichiers
https://mon-partage.fr/f/pFqfBocT/
https://mon-partage.fr/f/5Laei2Hl/
Voici le programme :
Option Explicit
Public aa
Sub importer()
Dim fd As Object, fichier$, wbks As Workbook, m&, x$, y&, f As Range, fin&
Dim adr, a, mem$, rep, nom$
Application.ScreenUpdating = 1
Set fd = Application.FileDialog(1)
With fd
fichier = ThisWorkbook.Path: m = Len(fichier)
.Title = "Choisissez le Fichier du quel vous Souhaitez Importer les Données"
.InitialFileName = fichier & "\Fichier à Importer\"
.ButtonName = "Importer"
.Filters.Clear
.Filters.Add "Fichier Excel", "*.xlsm"
.AllowMultiSelect = False
If .Show <> 0 Then
nom = .SelectedItems(1)
a = Split(nom, "\"): mem = a(UBound(a))
mem = Mid(mem, 1, Len(mem) - 4)
Set wbks = Workbooks.Open(nom, 0)
aa = wbks.ActiveSheet.Range("A1:AP" & wbks.ActiveSheet.Range("A" & Rows.Count).End(3).Row)
wbks.Close 0
Call traiter
Else
MsgBox "Vous n'avez aucun Fichier Planning Equipe PMC, ou vous n'avez Séléctionné aucun fichier!!!", , "Manque de Fichier": Exit Sub
End If
End With
End Sub
Sub traiter()
Dim bb, a&, i&, n&, cc, fin&, d&, col&
With Feuil1
bb = .Range("A2:AP" & .Range("A" & Rows.Count).End(3).Row)
End With
ReDim cc(1 To UBound(aa), 1 To UBound(aa, 2))
For i = 1 To UBound(aa)
For a = 1 To UBound(bb)
If aa(i, 1) = bb(a, 1) Then
For col = 3 To UBound(bb, 2)
If aa(i, col) <> bb(a, col) Then bb(a, col) = aa(i, col)
Next col
GoTo 1
End If
Next a
n = n + 1
For d = 1 To UBound(bb, 2)
cc(n, d) = aa(i, d)
Next d
cc(n, 2) = cc(n, 3) & "-" & cc(n, 4) & "-" & cc(n, 5) & "-" & cc(n, 8) & "-" & cc(n, 9) & "-" & cc(n, 11)
1 Next i
With Feuil1
.Cells(3, 1).Resize(UBound(bb), UBound(bb, 2)).FormulaLocal = bb
fin = .Range("A" & Rows.Count).End(3).Row + 1
.Cells(fin, 1) = 1
.Cells(fin, 1).Resize(UBound(cc), UBound(cc, 2)).FormulaLocal = cc (ligne en erreur)
Call test
End With
End Sub
Sub test()
Dim fin&, i&
Application.ScreenUpdating = 0
With Feuil1
fin = .Range("A" & Rows.Count).End(3).Row
For i = fin To 3 Step -1
If .Cells(i, 1) = "" Then .Rows(i).Delete
Next i
End With
End Sub
Merci d'avance.
BAKI -
-
-