VBA rapatrier des valeurs dans classeur principal

Résolu/Fermé
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 - Modifié par snow_frog le 31/03/2016 à 10:09
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 - 1 avril 2016 à 08:52
Bonjour,

Voilà ce que je voudrais faire:

À partir d'un classeur Excel:
1) Ouvrir plusieurs fichiers (sélectionné par une boite de dialogue)
2) Appliquer des formules dans ces fichiers ouvert
3) Rapatrier des valeurs des fichiers ouvert dans le classeur principal
Si possible sous la forme:
A1:nom_du_fichier_a B1:valeur_a1 C1:valeur_a2
A2:nom_du_fichier_b B2:valeur_b1 C2:valeur_b2

Pour les points 1 et 2, j'y suis arrivé, en imbriquant des morceaux de code trouvé aux hasard de mes recherches.
(je suis parti d'un lancement de macro par bouton...) je commence tout juste en VBa, donc potentiellement mon code ci-dessous n'est pas très optimisé, mais pour le moment pour moi: il fonctionne :)


Sub Bouton2_Cliquer()
Dim MainWbk As String
Dim lngCount As Long
MainWbk = ActiveWorkbook.Name

' Open the file dialog
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Show
' Display paths of each file selected
Application.ScreenUpdating = False
For lngCount = 1 To .SelectedItems.Count
'MsgBox .SelectedItems(lngCount)
Workbooks.OpenText Filename:=.SelectedItems(lngCount), _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1)), DecimalSeparator:=".", TrailingMinusNumbers:=True
Range("B1").Select
ActiveCell.Formula = "=(RC[-1]-(INDEX(C[-1],(ROW()+5),1)))"
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
dl = Range("A65536").End(xlUp).Row 'définit la variable dl
Selection.AutoFill Destination:=Range("B1:B" & dl), Type:=xlFillDefault 'propage la formule jusqu'a dernière ligne
Range("C1").Select
ActiveCell.Formula = "=MIN(C[-1])"
Range("C2").Select
ActiveCell.Formula = "=MAX(C[-1])"
Next lngCount
End With
End Sub


je joins : mon fichier excel avec ma macro + 2 fichiers exemple que j'ouvre
classeur: https://www.cjoint.com/c/FCFidpyztYA
fichier_a: https://www.cjoint.com/c/FCFiesbG0bA
fichier_b:https://www.cjoint.com/c/FCFie0UpNWA

merci d'avance pour votre aide sur ce chemin pavé d'embuche VBA :)

3 réponses

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
Modifié par f894009 le 31/03/2016 à 11:47
Bonjour,

A1:nom_du_fichier_a B1:valeur_a1 C1:valeur_a2
A2:nom_du_fichier_b B2:valeur_b1 C2:valeur_b2


valeur_a1 c'est cellule A1 de a ???????

Vous selectionnez combien de fichiers ?????

Parce qu'a trois je ne vois pas ce que vous recuperez
0
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 139
31 mars 2016 à 13:34
Bonjour,

le nombre de fichier selectionner peut varier

ce que je voudrais pour le 3)

c'est recupérer les cellules C1 et C2 de chaque fichier ouvert/traiter (min et max)

et le coller dans mon classeur avec
A1= nom du fichier
B1= valeur contenu en C1
C1= valeur contenu en C2

puis pour le second fichier idem
A2= nom du fichier
B2= valeur contenu en C1
C2= valeur contenu en C2
...

j'espère avoir été plus clair ?

merci pour l'aide.
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
31 mars 2016 à 17:12
Re,

fichier modifie: https://www.cjoint.com/c/FCFplPzoNaf

ce que je voudrais pour le 3) ?????????????
0
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 139
31 mars 2016 à 18:20
merci, je regarde ça demain matin (pas d'Excel ici)

"ce que je voudrais pour le 3) ?????????????" --> je reformulais juste en dessous mon point n° 3.

merci en tous cas, de ce que je peux voir sous libre office, le résultat me parait ok.
0
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 139
1 avril 2016 à 08:52
Merci f894009,

c'est tout à fait ce que je voulais!

je vais regarder un peu plus en détail le fonctionnement de "Tinfos"
0