Macros pour récupérer valeurs externes au fichier

Bastien43

XLDnaute Occasionnel
Bonjour,

Je souhaite récupérer les données de plusieurs fichiers externes (références externes) dans un seul fichier.

Je peux mettre ='C:\Users\ ....\Desktop\[MonFichier.xlsm]DDP!$M$13

Cependant à l'ouverture de Excel, un message d'alerte s'affiche en rapport aux connexions externes, ... Je ne veux pas de message d'erreur. Je peux désactiver l'invite mais cela ne m'intéresse pas.

Est-il possible de créer un bouton et une macro qui viendrait récupérer la donnée dans chacun des fichiers lorsque je clique et non à l'ouverture d'excel.

Voici un exemple d'application. Je cherche à récupérer les Prix Unitaires de chaque feuille excel nommée DDPi. La valeur de i est noté dans la colonne A que je masque ensuite.

Parfois un DDPi donné n'existe pas car il n'y a pas de ligne de prix et donc aucun prix unitaire correspondant.

Je joins la macro que j'ai commencée... avec 3 fichiers en exemple.


Sub MAJ_PU()
Dim MonFichier As String, chemin As String
chemin = ThisWorkbook.Path & "\Détails de prix\"

For i = 6 To 20
If Range("B" & i) <> "" Then
MonFichier = chemin & "DDP" & Range("A" & i).value & ".xlsx"
Workbooks.Open Filename:=MonFichier, local:=True
'Range("F" & i) = +[MonFichier]DDP!$M$13 ' J'ai une erreur ici
Else
Range("F" & i) = ""
End If

Next i

MsgBox "Prix unitaire mis à jour."

End Sub

Je vous remercie pour votre aide,
Cordialement,
 

Pièces jointes

  • DDP1.xlsx
    9.3 KB · Affichages: 4
  • DDP2.xlsx
    9.3 KB · Affichages: 3
  • DDP3.xlsx
    9.3 KB · Affichages: 3
  • Prix unitaires.xlsx
    10.9 KB · Affichages: 3

Calvus

XLDnaute Barbatruc
Bonsoir Bastien,

J'ai jeté un oeil à tes fichiers mais ta demande est trop floue, aucune donnée n'est renseignée.

Il faudrait mettre un exemple avec le résultats souhaité et les données initiales dans les autres fichiers.
A+
 

Bastien43

XLDnaute Occasionnel
Bonjour,

Merci pour votre réponse. En effet, je n'ai pas mis assez d'infos.

Je renvoie le document avec les fichiers joints en exemple.

J'ai complété la formule qui va retrouver le prix unitaires de chaque tâche (colonne F). Si je n'ouvre pas les fichiers, un message d'alerte s'affiche (ci-joint à mon message) concernant les références externes.

Je ne souhaite pas ouvrir moi même tous les documents pour actualiser les prix unitaires.

Je pensais donc mettre une macro qui ouvre elle-même le fichier et le ferme et affecte le prix unitaire correspondant dans la bonne case.

La colonne A a les mêmes indices que les fichiers sources DDP (Détail de prix) 1 à 20. Parfois un fichier source DDP... n'existe pas (DDP6.xls en exemple et DDP9.xls à DDP15.xls) et la macro ne doit pas bloquer.

Je vous remercie encore pour votre aide et votre temps.
Cordialement,
 

Pièces jointes

  • Prix unitaires.xlsm
    31.8 KB · Affichages: 6
  • DDP1.xlsx
    9.3 KB · Affichages: 5
  • DDP2.xlsx
    9.3 KB · Affichages: 5
  • DDP3.xlsx
    9.3 KB · Affichages: 3
  • DDP4.xlsx
    9.3 KB · Affichages: 2
  • DDP5.xlsx
    9.3 KB · Affichages: 2
  • DDP7.xlsx
    9.3 KB · Affichages: 2
  • DDP8.xlsx
    9.3 KB · Affichages: 2
  • Message d'alerte.jpg
    Message d'alerte.jpg
    25.8 KB · Affichages: 19

Calvus

XLDnaute Barbatruc
Bonsoir Bastien, le forum,

Voici le code à mettre dans ton module du classeur Prix Unitaires.

VB:
Sub MAJ_PU()


Dim MonFichier As String, chemin As String, Mavaleur As String, nom As String
        
        chemin = ThisWorkbook.Path & "\"
        
On Error Resume Next
For i = 6 To 20
    If Range("B" & i) <> "" Then
        MonFichier = chemin & "DDP" & Range("A" & i).Value & ".xlsx"
            nom = "DDP" & Range("A" & i) & ".xlsx"
                Workbooks.Open Filename:=MonFichier, local:=True
        
                Mavaleur = Range("M13")
            ThisWorkbook.Activate
        Range("F" & i) = Mavaleur
        Workbooks(nom).Close False
    End If
        
Next i
        
        MsgBox "Prix unitaire mis à jour."

End Sub

Bonne soirée
 

Discussions similaires

Réponses
5
Affichages
535

Statistiques des forums

Discussions
315 092
Messages
2 116 119
Membres
112 666
dernier inscrit
Coco0505