Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Import d'un fichier .xlsx et analyse des données en VBA

Massy1

XLDnaute Nouveau
VB:
Bonjour la communauté !
Je souhaite importer un fichier .xlsx qui a plusieurs pages et copier les données qu'il contient dans chacune de ces feuilles  vers mon fichier de travail.
Le but est de feuilleter le fichier page par page et de récupérer toutes données.
Dans le l'exemple suivant, j'ai pu accédé au fichier en lecture avec une macro et d'afficher un true ou un false si je trouve un prénom donné dans l'une des pages.
Mais ce que je souhaite faire en vrai, c'est de récupérer les données de la feuille "ClasseGarçons" du classeur "fichiersource" joint et les données de la feuille "ClasseFilles" du même fichier et de les coller dans "fichierDestination".

Est ce que quelqu'un peut me proposer une solution ?

Merci d'avance :)

[CODE]Sub Importation_xlsx()

Dim FichierData, Template As String
Dim myData As Variant
FichierData = Application.GetOpenFilename("Fichier Excel (*.xlsx), *.xlsx", , _
              "Select your file!")

If FichierData = "Faux" Then
    MsgBox "@Data Tech : No file selected!"
    End
End If

Application.ScreenUpdating = False
    Application.DisplayAlerts = True
    Workbooks.Open Filename:=FichierData, ReadOnly:=True
    NomFichierOuvert = ActiveWorkbook.Name
    Set entete = ActiveSheet.Cells.Find(what:="Nawal")
    If entete Is Nothing Then
    MsgBox "false"
    Else
    MsgBox "true"
    End If

    Application.DisplayAlerts = False
    Workbooks(NomFichierOuvert).Close
    Application.DisplayAlerts = True
End Sub
 

Pièces jointes

  • fichiersource.xlsx
    10.5 KB · Affichages: 9
  • fichierDestination.xlsm
    18.6 KB · Affichages: 11

Massy1

XLDnaute Nouveau
Bonjour,
Une proposition avec Power Query.
Cordialement.
Bonjour @goube,
Merci pour ta réponse.
Mais je ne souhaite pas le faire avec PowerQuery. Et ce que je veux faire sur VBA c'est d'importer le contenu des différentes feuilles (s'il existe plus de 2) et de le mettre dans une seule feuille automatiquement. C'est à dire que à chaque fois que j'aurais un autre fichier je pourrais lancer juste ma macro pour feuilleter le classeur sans passer par powerquery.

Cordialement,
 

Massy1

XLDnaute Nouveau
Bonjour,
je reviens vers vous pour vous partager la solution à mon problème que j'ai programmé :


VB:
Sub Importation_xlsx()

Dim FichierData, Template As String
Dim myData As Variant
FichierData = Application.GetOpenFilename("Fichier Excel (*.xlsx), *.xlsx", , _
              "Select your file!")

If FichierData = "Faux" Then
    MsgBox "@Data Tech : No file selected!"
    End
End If

ThisWorkbook.ActiveSheet.Cells.Clear

'Cells.Clear

Application.ScreenUpdating = False
    
    Application.DisplayAlerts = True
    
    
    Workbooks.Open Filename:=FichierData, ReadOnly:=True
    NomFichierOuvert = ActiveWorkbook.Name
    Set Monclasseur = Application.Workbooks.Open(FichierData)
    
    Dim sheetsNumber, RowLength, i, j, columnLength As Integer
    sheetsNumber = 2
    RowLength = 5
    columnLength = 2
    i = 1
    j = 1
    
    For m = 1 To sheetsNumber
    For l = 1 To columnLength
    For k = 1 To RowLength
    ThisWorkbook.ActiveSheet.Cells(i, j).Value = Monclasseur.Sheets(m).Cells(k, l).Value
    i = i + 1
    Next k
    i = 1
    j = j + 1
    Next l
    Next m
    

    Application.DisplayAlerts = False
    Workbooks(NomFichierOuvert).Close
    Application.DisplayAlerts = True
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…