Importation d'un fichier Excel dans une feuille de calcul

Bonjour et merci d'avance pour vos contributions.

Etant une vrai bille en VBA, j'aurai un besoin pour un petit problème qui vous paraitra peut-être trop simple.

En effet, j'ai un équipement scientifique qui me génère un fichier de données Excel 2016 et je souhaiterai importer ces données dans ma feuille de calculs

Le fichier généré par l'équipement contient un seul onglet avec des plages de valeurs non contiguës mais toujours fait de la même façon.

1) Depuis mon fichier de calcul et l'onglet "ComputeEngine", je souhaiterai lancer une macro pour qu'elle ouvre une boite de dialogue de sélection du fichier Excel à importer.

2) Toujours dans mon fichier de calcul, dans l'onglet "Données brutes" supprimer les éventuelles données de la plage B2:BC13

3) Avec le fichier de données à importer, sélectionner la plage A2:A13 et coller A2 dans mon fichier de calcul onglet "Données brutes" puis sélectionner la plage O2:W13 et coller à la suite de la première plage....j'ai d'autres plages de donner à coller mais si j'ai un début d'exemple, je serai faire la suite.

4) Récupérer le nom du fichier dont les données ont été importé et inscrire sa valeur en A14 dans l'onglet " Données brutes"

5) Fermer la boite de dialogue.

Mon besoin principal est: importer les valeurs du fichier à importer dans l'onglet "Données brutes": les points 2, 3 et 4 sont un peu la cerise sur le gâteau.

Voilà, j'espère avoir été clair et merci d'avance

Bonsoir

Avec les fichiers ce serait plus facile et plus précis.

Cordialement.

Bonjour,

Oui, pourquoi pas mais mes fichier sont en cours de mise au point....

Toutefois je les joints si cela peux être utile.

Et merci

Bonjour à tous,

Une proposition :

Sub ImportData()

Dim Fichier As String, Col As Integer, CDest As Integer, ShImp As Worksheet

'Boite dialogue pour récupération du nom du fichier
With Application.FileDialog(msoFileDialogFilePicker)
    .Filters.Clear
    .Filters.Add "Fichiers Excel", "*.xlsx?", 1
    .Title = "Choisissez le fichier à importer"
    .AllowMultiSelect = False
    .InitialFileName = ThisWorkbook.Path
    If .Show = True Then Fichier = .SelectedItems(1)
End With
If Len(Fichier) > 0 Then
    Workbooks.Open Fichier 'Ouverture fichier
    Set ShImp = ActiveWorkbook.Sheets(1)
    With ThisWorkbook.Sheets("Données brutes")
        .Range("2:14").ClearContents 'Suppression anciennes données
        For Col = 1 To ShImp.Cells(2, Columns.Count).End(xlToRight).Column 'Boucle sur les colonnes
            If Not ShImp.Cells(2, Col) = "" Then 'Si colonne non vide
                CDest = CDest + 1 'Incrémente la position de la colonne de destination
                ShImp.Range(ShImp.Cells(2, Col), ShImp.Cells(13, Col)).Copy .Cells(2, CDest) 'Import colonne
            End If
        Next Col
        .Range("A2:A12").Replace What:="s", Replacement:="", LookAt:=xlPart 'Supprime les "s" en colonne A
        .Range("A14") = Replace(Fichier, ThisWorkbook.Path & "\", "") 'Nom fichier
    End With
    ActiveWorkbook.Close False 'Ferme fichier import
End If

End Sub

Bonjour Pedro,

Je viens de tester le code et il marche parfaitement et fait parfaitement ce qu'il me faut.

Un grand merci à toi.

Je dois encore voir comment il fonctionne histoire de ressortir moins bête et surtout d'apprendre....

A force de tourner un rond sur ma problématique j'avais commencé à écrire du code (ci-joint) mais cela était encore très loin de fonctionner et je buté notamment sur une sélection multiple et le copy....

Et encore un grand merci

Sub Importation()

    Application.ScreenUpdating = False 'désactive le rafraichissement de l'écran   

    Dim WkbSrc, WkbDest As Workbook, ShtDest As Worksheet
    Dim Nom_Fichier As Variant

    Set WkbDest = ThisWorkbook

    Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm")
    If Nom_Fichier <> False Then
        Set WkbSrc = Workbooks.Open(Nom_Fichier)
        WkbSrc.Activate
    End If

   'Copie des données depuis la source vers la destination    

    With ActiveSheet
        .Range("A2:A13, O2:W12, AA2:AL12, AM2:AU12, AY2:BGL12, BK2:BS2, BW2:CE1").Copy

     End With    

    WkbDest.Worksheets("Données brutes").[A2].Paste

    Range("A14").Value = Nom_Fichier  

   WkbDest.Worksheets("CALCULS").[A2].Select

   'je souhaite fermer le fichier qui a été ouvert

   'WkbSrc.active
   'ActiveWorkbook.Close Savechanges:=False

End Sub

C'était un bon début ! Je reste à disposition si tu as des questions sur le code proposé.

Rechercher des sujets similaires à "importation fichier feuille calcul"