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 Sub

Je 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 Sub

Merci 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"

66test-anibal.zip (30.00 Ko)

Bonsoir

A tester

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

Rechercher des sujets similaires à "base donnees recuperation feuil"