Import de données à partir d'un autre classeur

Bonjour à tous,

J'ai reçu une formation en VBA il y a peu mais je suis déjà un peu dépassé par ce que j'essaye de faire qui, me paraissait simple....au début !

Je souhaite faire une macro pour importer chaque trimestre un fichier de données.

- L'idée est d'avoir une boite de dialogue qui me permet de choisir la période que j'importe (Mars, Juin, Septembre, Décembre).

- Une fois celle-ci sélectionner le fichier à importer dont le nom est variable et qui contient l'onglet qui m’intéresse.

- Enfin copier l'intégralité de l'onglet dont le nom est fixe ("Alphablox Export") dans un onglet correspondant à la période sélectionnée (Data Mars, Data Juin, Data Septembre, Data Décembre) de mon classeur d'origine

J'ai aussi besoin à la copie de ne garder que les 6 premier caractères de ma première colonne mais j'ai déjà réussi à le faire je pense pouvoir copier coller le code en dessous de l'autre macro.

Bref faire un copier coller des deux classeurs ouverts (ou pas) avec un nom fixe ça va.... mais étant donnée que l'intérêt et de sélectionner le fichier d'import (qui change de nom) et la période qui définie l'onglet de destination dans mon classeur je viens voir si quelqu'un peut m'aider car la je patauges totalement...

Merci beaucoup à ceux qui m'aideront si jamais j'arrive à faire ça tout seul je mettrais ma réponse.

JB

Pour l'instant voilà ce que j'ai fait sauf que cela ne fonctionne pas...

Sub copy()

Dim Wbk1 As Workbook
'Wbk1 sera mon classeur à selectionner
Dim Period As Sheets
'Se sera l'onglet de destination
Dim X As String
'La période rentrée par inputbox par l'utilisateur (March, June, Septembre, December)
Dim Y As String
'Pour completer le nom de l'onglet

Set Y = " Data"
Set X = Application.InputBox(Prompt, "Enter your Period", Default)
Set Wbk1 = Application.GetOpenFilename
'pour aller chercher le fichier source dont le nom est variable
Set Period = X + Y

Wbk1.Worksheets("Alphablox Export").Range("A1:CC1000") = Workbooks("UV report Initiator").Period.Range("A1:CC1000")

End Sub

Bonjour

Essayes ce code

Sub Recopy()  ' Eviter de donner un nom réservé par VBA ( Copy )
Dim X As String           ' La période rentrée par inputbox par l'utilisateur (March, June, Septembre, December)
Dim Y As String           ' Pour completer le nom de l'onglet
Dim Fichier

  Y = " Data"
  X = Application.InputBox(Prompt, "Enter your Period", "March")
  If X = "" Then Exit Sub
  Fichier = Application.GetOpenFilename
  If Fichier <> False Then
    With Workbooks.Open(Fichier)
      With Sheets(X & Y)                  ' Travail avec la page
        ' code pour récupérer les infos
        .Range("A1:CC1000").copy ThisWorkbook.Sheets("Alphablox Export").Range("A1")
      End With
      .Close savechanges:=False
    End With
  End If
End Sub

Si ce n'est pas bon il faut fournir 2 fichiers : Le principal et un fichier de données

Parfait merci pour ton aide.

J'ai du mal m'exprimer car "Alphablox export" est dans le fichier importé et le "X&Y" dans mon classeur de travail.

J'ai un dernier soucis à régler lors de l'utilisation de la macro (Excel n'a pas assez de ressource etc...) dû au fichier importé qui comporte un graphique (que je ne veux pas récupérer) qui à l'air assez lourd lorsque je supprime celui-ci la macro fonctionne bien. le problème est que ce fichier comportera toujours ce graphique .

Sinon voila le code que j'ai mis grâce à ton (importante) aide Banzai64. J'y ai rajouter mon code pour ne retenir que les 6 premiers caractère de ma colonne A.

Si quelqu'un à une idée pour que la macro se concentre uniquement sur les cellules je suis preneur....

Sub Import()  
Dim X As String           ' La période rentrée par inputbox par l'utilisateur (March, June, Septembre, December)
Dim Y As String           ' Pour completer le nom de l'onglet
Dim Fichier

  Y = " Data"
  X = Application.InputBox(Prompt, "Enter your Period", "March")
  If X = "" Then Exit Sub
  Fichier = Application.GetOpenFilename
  If Fichier <> False Then
    With Workbooks.Open(Fichier)
      With Sheets("Alphablox Export")                 ' Travail avec la page
       ' code pour récupérer les infos
       .Range("A1:CC1000").Copy ThisWorkbook.Sheets(X & Y).Range("A1:CC1000")
      End With
      .Close savechanges:=False
    End With
  End If
Dim nom As Variant
Dim i As Integer
For i = 2 To 1000
nom = ThisWorkbook.Sheets(X & Y).Cells(i, 1)
ThisWorkbook.Sheets(X & Y).Cells(i, 1).FormulaR1C1 = Left(nom, 6)
Next i
End Sub

Bonsoir

2 fichiers

Manque un . (point) devant

With .Sheets("Alphablox Export")                 ' Travail avec la page

Modifies la ligne correspondante

.Range("A1:CC1000").Copy ThisWorkbook.Sheets(X & Y).Range("A1")

Modifies la ligne correspondante

ThisWorkbook.Sheets(X & Y).Cells(i, 1) = Left(nom, 6)

Pour le code, j'ai appliquer tes recommandations et t'en remercie.

Ci-joint, les documents que j'utilise le classeur que j'ai débuté aujourd'hui et un exemple de fichier que je cherche à importer.

JB

Bonsoir

A vérifier

Merci beaucoup c'est parfait.

Rechercher des sujets similaires à "import donnees partir classeur"