Base de données (récupération de données sur plusieurs feuil
Bonjour à tous,
il s'agit de ma première participation sur ce forum, et je vous remercie d'avance pour l'aide que vous m'apporterez .
Voici ma problématique :
je souhaiterai réaliser une base de donnée (feuille excel) qui pourrait automatiquement récupérer des données précises issus de plusieurs feuilles (à différent moment).
Actuellement je dispose de se code qui me permet de copier l’intégralité de la feuille, pour ma part je souhaiterai sélectionner un onglet bien spécifique dans la feuille que j'essaye de charger.
Deuxième problème, a chaque utilisation de la macro les premières données sont écrasées, comment mettre les nouvelles données à la suite ?
Sub Macro1()
Dim a As Variant, Nom As String
Nom = ActiveWorkbook.Name
ChDrive "C:" ' Choix du lecteur
ChDir "C:\" 'Choix du répertoire
a = Application.GetOpenFilename("fichier excel (*.xlsx), *.xlsx", _
, "Sélection de vos fichiers excel", , True)
Select Case TypeName(a)
Case Is = "Boolean"
Exit Sub
Case Else
For b = LBound(a) To UBound(a)
Workbooks.Open a(b)
Next
End Select
Nom2 = ActiveWorkbook.Name
Cells.Select
Selection.Copy
Windows(Nom).Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.DisplayAlerts = False
Windows(Nom2).Close
Application.DisplayAlerts = True
End SubJe vous remercie d'avance pour votre aide
N'hésitez pas à me poser des questions si nécessaire
Bien cordialement,
Anibal
Bonsoir
Pour tout te dire, macro non testée, modifiée de mémoire (risques d'erreurs)
Si cela ne fonctionne pas il faut que tu joignes ton fichier principal ainsi qu'un ou deux fichiers de données
Tu indiques dans quelle page tu veux récolter les données "Feuille_Destination"
Tu indiques de quelles pages tu veux récupérer les données "Feuille_voulue"
Option Explicit
Sub Macro1()
Dim a As Variant, Nom As String
Dim WsDestin As Worksheet
Dim I As Integer
Set WsDestin = Sheets("Feuille_Destination")
Nom = ActiveWorkbook.Name
ChDrive "C:" ' Choix du lecteur
ChDir "C:\" 'Choix du répertoire
a = Application.GetOpenFilename("fichier excel (*.xlsx), *.xlsx", _
, "Sélection de vos fichiers excel", , True)
Select Case TypeName(a)
Case Is = "Boolean"
Exit Sub
Case Else
For I = LBound(a) To UBound(a)
With Workbooks.Open(a(I))
With .Sheets([surligner=#FFFFBF]"Feuille_voulue")
.Range("A1:P" & .Range("A" & Rows.Count).End(xlUp).Row).Copy
WsDestin.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
.Close savechanges:=False
End With
Next
End Select
End SubMerci pour ta réponse !!!
Malheureusement j'ai essayé mais je n'y arrive pas, j'ai toutefois réalisé un exemple qui je pense pourra t'aider. En Pièces jointes tu trouveras 2 exemples de devis, et la feuille de base de donnée.
Malheureusement actuellement avec le code actuel, j'écrase à chaque fois les données présente et je n'arrive pas à coller les données dans l'onglet prévu a cet effet "devis en masse"
Merci beaucoup !!!! Vraiment c'est super !!!!
Bonne soirée à toi et désolé si je me répète mais vraiment MERCI !
Bonjour,
Il s'avère que j'ai le même problème que Anibalion. En effet, je souhaiterai copier des données d'un fichier excel à un autre, sans supprimer les données enregistrées précédemment dans le tableau de destination. Pour l'instant j'ai un peu bidouillé mais là je suis bloqué par l'erreur 1004. Je vous transmet le bout de code que j'ai rentré :
Sub Copiedesdonnées()
Dim Source As Workbook, Destination As Workbook
'ouvrir le classeur source (en lecture seule)
Set Source = Application.Workbooks.Open("D:\...\source.xls")
'définir le classeur destination
Set Destination = ThisWorkbook
'copier les données de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination
Source.Sheets("Feuille source").Cells.Copy Destination.Sheets("Feuille destination").Cells(65536, 1).End(xlUp).Offset(1, 0)
'fermer le classeur source
Source.Close False
End Sub
Apparemment ça bloquerait au niveau de la copie, au niveau du cells.end.
Vous remerciant d'avance pour votre réponse,
Bebon
Bonjour et bienvenu(e)
Bebon a écrit :Apparemment ça bloquerait au niveau de la copie, au niveau du cells.end.
C'est logique
Tu veux copier une page entière dans une autre page mais pas à partir de A1
C'est comme si tu veux transvaser un litre d'eau dans une bouteille d'un litre mais qui est déjà un peu remplie : On ne peut pas
La solution c'est de copier que les données (pas la page entière)
style
Source.Sheets("Feuille source").range("A1").CurrentRegion.Copy Destination.Sheets("Feuille destination").Cells(65536, 1).End(xlUp).Offset(1, 0)A tester et si pas ça : Tes fichiers vont être indispensables
Bonjour Banzai,
Je voulais te remercier car le "currentregion" marche du tonnerre. Je vais pouvoir impressionner mes collègues maintenant
Encore merci,
A+,
Bebon