XL 2019 si "autre classeur" existe alors récupérer donnée dans "autre classeur" sinon rien

DédéW83

XLDnaute Junior
Bonjour à tous,
j'ai besoin de récupérer valeur de la cellule M10 d'un autre classeur s'il existe déjà, mais j'ai un soucis avec ESTERREUR.
=SI(ESTERREUR("'[Classeur"&A5&".xlsm'!$M$10");"ERREUR";"existe") me donne toujours "existe", même si le classeur n'existe pas. En A5 il y a le n° du classeur, par exemple Classeur5.
Ci joints 4 classeurs, le 100 récupère M10 des autres.
Voir formules dans le Classeur100.
Merci de votre aide,
Dédé.
 

Pièces jointes

  • Classeur1.xlsx
    12.9 KB · Affichages: 3
  • Classeur2.xlsx
    12.9 KB · Affichages: 3
  • Classeur3.xlsx
    12.9 KB · Affichages: 3
  • Classeur100.xlsx
    27.9 KB · Affichages: 2
Dernière édition:
Solution
Bonjour,


Dans le fichier zip ci-joint vous trouverez.
Eh oui n'ai changé les noms car les 'ClasseurN.xlsx' ça ne me parle pas.

le fichier DédéW83.xlsx avec une feuille 'Feuil1' qui contient une requête Power-Query (inclus dans votre version excel)
Cette dernière sélectionne et traite les fichiers dont dont le nom commence par 'DédéW83' et ne contient pas '(100)'

A vous d'aller ensuite chercher les données à cet endroit par formule, voir l'exemple dans votre feuille 'Totaux généraux'.

Ce n'est qu'un exemple qui peut être amélioré, modifié ou changé éventuellement

Cordialement

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Dédé, bonsoir le forum,

Par formule je ne sais pas faire. Je te propose une solution VBA avec le code ci-dessous qui renvoie la valeur dans la cellule active :

VB:
Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès))
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)

Set CD = ThisWorkbook 'définit le classeur destination CD
CA = CD.Path & "\" 'définit le chemin d'accès CA
Set OD = CD.ActiveSheet 'définit l'onglet destination OD
F = Dir(CA & OD.Range("AB17").Value & ".xlsx") 'définit le fichier F
If F = "" Then 'condition : si F est vide
    Exit Sub 'sort de la procédure
Else 'sinon
    'écrit dans la cellule active la formule = M10 de l'onglet 2022 du classeur désigné par la cellule AB17 de l'onglet OD
    ActiveCell.Formula = "='[" & OD.Range("AB17").Value & ".xlsx]" & "2022'!M10"
End If 'fin de la condition
End Sub
 

DédéW83

XLDnaute Junior
Bonsoir Dédé, bonsoir le forum,

Par formule je ne sais pas faire. Je te propose une solution VBA avec le code ci-dessous qui renvoie la valeur dans la cellule active :

VB:
Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès))
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)

Set CD = ThisWorkbook 'définit le classeur destination CD
CA = CD.Path & "\" 'définit le chemin d'accès CA
Set OD = CD.ActiveSheet 'définit l'onglet destination OD
F = Dir(CA & OD.Range("AB17").Value & ".xlsx") 'définit le fichier F
If F = "" Then 'condition : si F est vide
    Exit Sub 'sort de la procédure
Else 'sinon
    'écrit dans la cellule active la formule = M10 de l'onglet 2022 du classeur désigné par la cellule AB17 de l'onglet OD
    ActiveCell.Formula = "='[" & OD.Range("AB17").Value & ".xlsx]" & "2022'!M10"
End If 'fin de la condition
End Sub
Merci Robert pour ta réponse rapide qui je crois tiens bien la route, mais je pense qu'il y a une formule qui convient car j'évite le vba pour si peu. D'ailleurs je viens de changer mon post#1...à voir.
Si je ne trouve pas cette formule, j'adopterai bien volontiers cette solution...
Je vais attendre d'autres solutions par formule et on verra bien...
@bientôt.
 

DédéW83

XLDnaute Junior
Re,

Ça ne saurait tarder, il y a des super balèzes en formules dans ce forum...
Bonjour Robert,
Vu que tout le monde est apparemment en vacance, j'ai regardé ta macro1.
Si j'a bien compris, ça ne marche que pour AB17.(que j'ai changé en A1 à A20)
En fait, dans le classeur 100(Feuille TOTAL Général) je veux récupérer le $M$10, onglet TOTAUX du ClasseurX (X=1 à 20 en A1 à A20) A1=1 A2=2........A20=20. Mais tous n'existent pas encore! d'où le sinon ""
Bref en gros un exemple, dans Classeur100 onglet TOTAL Général K14:
en ligne 14: IF Classeur14(en A14) exist then
K14=$M$10 de l'onglet TOTAUX du classeur en question
Else Exit Sub
ou en ligne 18:
IF Classeur18(en A18) exist then
K18=$M$10 de l'onglet TOTAUX du classeur en question
Else Exit Sub
Et que bien sur, toute les liaisons soient mis à jour à chaque ouverture du Classeur100.
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,


Dans le fichier zip ci-joint vous trouverez.
Eh oui n'ai changé les noms car les 'ClasseurN.xlsx' ça ne me parle pas.

le fichier DédéW83.xlsx avec une feuille 'Feuil1' qui contient une requête Power-Query (inclus dans votre version excel)
Cette dernière sélectionne et traite les fichiers dont dont le nom commence par 'DédéW83' et ne contient pas '(100)'

A vous d'aller ensuite chercher les données à cet endroit par formule, voir l'exemple dans votre feuille 'Totaux généraux'.

Ce n'est qu'un exemple qui peut être amélioré, modifié ou changé éventuellement

Cordialement
 

Pièces jointes

  • DédéW83.zip
    57 KB · Affichages: 2

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Si j'ai bien compris, le code adapté :|

VB:
Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès))
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)

Set CD = ThisWorkbook 'définit le classeur destination CD
CA = CD.Path & "\" 'définit le chemin d'accès CA
Set OD = CD.Worksheets("TOTAL Général") 'définit l'onglet destination OD
For I = 1 To 20 'boucle sur 20 lignes
    F = Dir(CA & OD.Cells(I, "A").Value & ".xlsx") 'définit le fichier F
    If F = "" Then 'condition : si F est vide
        Exit Sub 'sort de la procédure
    Else 'sinon
        'écrit dans la cellule ligne I colonne K la formule = M10 de l'onglet TOTAUX du classeur désigné par la cellule ligne I colonne A de l'onglet OD
        os.Cells(I, "K").Formula = "='[" & OD.Cells(I, "A").Value & ".xlsx]TOTAUX'!M10"
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub

[Édition]
Ooops, bonjour Hasco, nos posts se sont croisés...
 

DédéW83

XLDnaute Junior
Re,

Si j'ai bien compris, le code adapté :|

VB:
Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès))
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)

Set CD = ThisWorkbook 'définit le classeur destination CD
CA = CD.Path & "\" 'définit le chemin d'accès CA
Set OD = CD.Worksheets("TOTAL Général") 'définit l'onglet destination OD
For I = 1 To 20 'boucle sur 20 lignes
    F = Dir(CA & OD.Cells(I, "A").Value & ".xlsx") 'définit le fichier F
    If F = "" Then 'condition : si F est vide
        Exit Sub 'sort de la procédure
    Else 'sinon
        'écrit dans la cellule ligne I colonne K la formule = M10 de l'onglet TOTAUX du classeur désigné par la cellule ligne I colonne A de l'onglet OD
        os.Cells(I, "K").Formula = "='[" & OD.Cells(I, "A").Value & ".xlsx]TOTAUX'!M10"
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub

[Édition]
Ooops, bonjour Hasco, nos posts se sont croisés...
Merci Robert et Hasco. Laissez moi le temps de digérer tout ça....
Je reviens bientôt.

@+
 

DédéW83

XLDnaute Junior
Bonjour,


Dans le fichier zip ci-joint vous trouverez.
Eh oui n'ai changé les noms car les 'ClasseurN.xlsx' ça ne me parle pas.

le fichier DédéW83.xlsx avec une feuille 'Feuil1' qui contient une requête Power-Query (inclus dans votre version excel)
Cette dernière sélectionne et traite les fichiers dont dont le nom commence par 'DédéW83' et ne contient pas '(100)'

A vous d'aller ensuite chercher les données à cet endroit par formule, voir l'exemple dans votre feuille 'Totaux généraux'.

Ce n'est qu'un exemple qui peut être amélioré, modifié ou changé éventuellement

Cord
 

DédéW83

XLDnaute Junior
Merci pour le zip.
En Feuil1, je suis arrivé à changer le nom des fichiers, et il me faut 4 colonnes en tout, voir captures...
C'est la première pour PowerQuery...
En feuil1colonne A c bon mais pas dans la feuille total général.. Comment ajouter des colonnes?
 

Pièces jointes

  • Capture1.PNG
    Capture1.PNG
    19.2 KB · Affichages: 18
  • Capture2.PNG
    Capture2.PNG
    21 KB · Affichages: 18
  • Capture3.PNG
    Capture3.PNG
    15.8 KB · Affichages: 18
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Soyez plus explicite, des images ne suffisent pas. C'est dans le cadre de quel projet, d'où tire-t-on les données des colonnes, que voulez-vous faire de ces colonnes.

Suivant ce que vous voulez, si ça dépasse le cadre de votre demande initiale, rouvrez un fil de discussion.
 

DédéW83

XLDnaute Junior
Re,

Oui, hors donc ?!
Rajoutez-les.

Cordialement
Re,

Soyez plus explicite, des images ne suffisent pas. C'est dans le cadre de quel projet, d'où tire-t-on les données des colonnes, que voulez-vous faire de ces colonnes.

Suivant ce que vous voulez, si ça dépasse le cadre de votre demande initiale, rouvrez un fil de discussion.
Votre post #10: quelle question?
Les données viennent de ces mêmes classeurs. B16(au lieu de M10), C16,D16 et E16. Voir captures d'écran 1 et 2...
Si vous n'avez pas le temps, c'est pas grave je me débrouillerai.
Merci d'avoir perdu du temps pour moi.
Cordialement,
Dédé.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 201
Messages
2 086 174
Membres
103 152
dernier inscrit
Karibu