Récupération de plusieurs valeurs dans un fichier fermé

Pat5

XLDnaute Junior
Bonjour et bonne année à tous

Petit problème de récupération de plusieurs valeurs dans un fichier fermé.

J'ai récupérer un fichier de myDearFriend qui est excellent pour la récupération d'une valeur dans un fichier fermé.

Par contre, je n'arrive pas à le modifier pour récupérer les valeurs de plusieurs cellules.

Je joins son fichier avec ma demande.

Merçi et bon dimanche.
 

Pièces jointes

  • utilisation de données d'un autre fichier 1.zip
    14.1 KB · Affichages: 75

Sylvie

XLDnaute Accro
Re : Récupération de plusieurs valeurs dans un fichier fermé

Bonjour Pat5, le forum

c'est le jour pour remettre à la lumière du forum, un formidable fichier de la Dream Team Thierry, Michel_m et MichelXLD qui m'a permis de reprendre toutes les cellules de mon choix dans Plusieurs classeurs fermés. C'était il y a longtemps, mais je peux te dire que je me sers toujours de cette démo et que son efficacité est absolument redoutable.

Utilise directement la version USF_ADO_Calculs_Collector_V01_03.xls que tu trouveras ici

https://www.excel-downloads.com/threads/vba-macro-copier-coller-plage-non-vide.41309/

C'est une bombe !!! :p

A+
 

pierrejean

XLDnaute Barbatruc
Re : Récupération de plusieurs valeurs dans un fichier fermé

bonjour Pat5

Vois si cela te convient
Noms des cellules a mettre a la suite de la premiere
resultats en colonne E
Bouton les cellules
 

Pièces jointes

  • PourRomain.zip
    14.9 KB · Affichages: 87
  • PourRomain.zip
    14.9 KB · Affichages: 87
  • PourRomain.zip
    14.9 KB · Affichages: 88

Pat5

XLDnaute Junior
Re : Récupération de plusieurs valeurs dans un fichier fermé

Bonjour pierrejean

C'est exactement celà qu'il me faut par contre il y a toujours une mgbox qui demande si le chemin est valable.

Si on le sort, c'est au top

Encore merçi
 

Pat5

XLDnaute Junior
Re : Récupération de plusieurs valeurs dans un fichier fermé

Bonsoir tout le monde

Grâce à myDearfriend et pierrejean mon fichier marche très bien, par contre, il est très, très long. C'est vrai que de récupérer plus de 70 données dans un fichier fermé, c'est ardu pour ma config. (ramenés à 30 sinon impossible à poster)

Mais pourrait-on simplifier les macros pour gagner en temps.


Sub Rapatriement()
'arret de l'afFichierage
Application.ScreenUpdating = False

Sheets("PROD MOIS").Visible = True
Sheets("PROD MOIS").Activate


With ActiveSheet

.Range("Résultat1").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule1").Value)


.Range("Résultat2").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule2").Value)


.Range("Résultat3").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule3").Value)

.Range("Résultat4").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule4").Value)

.Range("Résultat5").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule5").Value)

.Range("Résultat6").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule6").Value)

.Range("Résultat7").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule7").Value)

.Range("Résultat8").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule8").Value)

.Range("Résultat9").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule9").Value)

.Range("Résultat10").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule10").Value)

.Range("Résultat11").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule11").Value)

.Range("Résultat12").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule12").Value)

.Range("Résultat13").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule13").Value)

.Range("Résultat14").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule14").Value)

.Range("Résultat15").Value = RecupValeur(.Range("Chemin").Value, .Range("Fichier").Value, _
.Range("Feuille").Value, .Range("Cellule15").Value)


End With

Sheets("PROD MOIS").Visible = False


'arret de l'affichage
Application.ScreenUpdating = True

End Sub




La fonction :


Option Explicit

Public Function RecupValeur(chemin, Fichier, Feuille, Cellule) As Variant


' Récupère une valeur dans un classeur fermé

'arret de l'affichage
Application.ScreenUpdating = False


Dim Cible1 As String
Dim Cible2 As String
Dim Cible3 As String
Dim Cible4 As String
Dim Cible5 As String
Dim Cible6 As String
Dim Cible7 As String
Dim Cible8 As String
Dim Cible9 As String
Dim Cible10 As String
Dim Cible11 As String
Dim Cible12 As String
Dim Cible13 As String
Dim Cible14 As String
Dim Cible15 As String



' Vérifier que le classeur existe
If Right(chemin, 1) <> "\" Then chemin = chemin & "\"

If Dir(chemin & Fichier) = "" Then
RecupValeur = "<< Cible non trouvée >>"
Exit Function

End If


' Reconstitue le chemin complet qui conduit à la cellule cible

Cible1 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible2 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible3 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible4 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible5 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible6 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible7 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible8 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible9 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible10 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible11 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible12 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible13 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible14 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)
Cible15 = "'" & chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Range("A1").Address(, , xlR1C1)


' Execute une macro XLM
RecupValeur = ExecuteExcel4Macro(Cible1)
RecupValeur = ExecuteExcel4Macro(Cible2)
RecupValeur = ExecuteExcel4Macro(Cible3)
RecupValeur = ExecuteExcel4Macro(Cible4)
RecupValeur = ExecuteExcel4Macro(Cible5)
RecupValeur = ExecuteExcel4Macro(Cible6)
RecupValeur = ExecuteExcel4Macro(Cible7)
RecupValeur = ExecuteExcel4Macro(Cible8)
RecupValeur = ExecuteExcel4Macro(Cible9)
RecupValeur = ExecuteExcel4Macro(Cible10)
RecupValeur = ExecuteExcel4Macro(Cible11)
RecupValeur = ExecuteExcel4Macro(Cible12)
RecupValeur = ExecuteExcel4Macro(Cible13)
RecupValeur = ExecuteExcel4Macro(Cible14)
RecupValeur = ExecuteExcel4Macro(Cible15)


'arret de l'affichage
Application.ScreenUpdating = True


End Function

Merçi

A+ Pat5 ;o)
 

pierrejean

XLDnaute Barbatruc
Re : Récupération de plusieurs valeurs dans un fichier fermé

bonsoir Pat5

Pourquoi diable avoir torturé la fonction RecupValeur !!!!

Refait le test avec la fonction telle qu'elle a été concue par J.Walkenbach et myDearfriend

normalement elle devrait aller plus vite et peut-etre même donner de meilleurs résultats

Explication:
telle que tu l'a ecrite la fonction recup tourne a chaque fois pour 15 valeurs alors qu'elle n'en donnera jamais qu'une en retour !
la derniere d'ailleurs
 

Pat5

XLDnaute Junior
Re : Récupération de plusieurs valeurs dans un fichier fermé

Bonjour pierrejean et le forum

Excuse moi pour ma réponse tardive mais je n'ai pas encore eu le temps nécessaire pour me remettre à mon fichier.
Je te remercie pour ta réponse et je te tiendrais au courant.

Bon dimanche

Pat5
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz