Chercher une cellule dans autre classeur mais pas dans la même F de calcul

  • Initiateur de la discussion Initiateur de la discussion blade76
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

blade76

Guest
Bonjour à tous,

Je suis perdu, je recherche une formule qui: Quand j'écris "plus" dans le classeur [déboursé sec NEW] feuille "DQE" cellule A4.
Irai me cherché la cellule A2 de la feuille "plus" du classeur [Sous détail New],
Mais quand j'écrit "moins" au lieu de "plus" dans le classeur [déboursé sec NEW] feuille "DQE" cellule A4.
Irai me cherché la cellule A2 de la feuille "moins" du classeur [Sous détail New].

J'espere avoir été assez clair. merci d'avance pour vos réponse.
 

Pièces jointes

Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Irai me cherché dans la cellule C4 de la feuille "DQE" la cellule A2 de la feuille "plus" du classeur [Sous détail New],
Irai me cherché dans la cellule C4 de la feuille "DQE" la cellule A2 de la feuille "moins" du classeur [Sous détail New].

Dsl je me suis mal exprimé.

Merci.
 
Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Bonjour blade76, bienvenue sur XLD,

En suivant strictement les indications de votre post #2, c'est assez élémentaire.

Ouvrez les 2 fichiers et entrez dans cette fameuse cellule C4 la formule :

Code:
=SI(A4="plus";'[SousdétailNEW.xlsx]plus'!$A$2;SI(A4="moins";'[SousdétailNEW.xlsx]moins'!$A$2;"?"))
Edit : ajouté "?" au cas où...

A+
 
Dernière édition:
Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Re,

S'agissant de textes, formule plus légère avec la fonction REPT :

Code:
=REPT('[SousdétailNEW.xlsx]plus'!$A$2;A4="plus")&REPT('[SousdétailNEW.xlsx]moins'!$A$2;A4="moins")
A+
 
Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Merci les gars, mais là où ça se complique mon histoire c'est que la cellule doit trier par feuille dans le classeur [sousdétailNEW] car "plus" et "moins" ne sont que des tests. Après il risque d'y avoir encore une centaine de feuilles donc la formule serait une usine à gaz.
Vous voyez ce que je veux dire .
Il faudrait une sorte de formule du genre =si(A3="";"";indirect............ et après je suis perdu car il y a toujours une faute de formule.
Merci a vous tous.

AAAHHHH L'AIDE
 
Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Re moi pour plus de precision
Voila où j'en suis

=SI(A3="";"";[SousdétailNEW.xlsx]indirect(A3&"!a2"))

Et ça me dit
#NOM?

Je pense que je suis pas loin mais ça fait depuis vendredi que je suis dessus et la je craque.
 
Dernière modification par un modérateur:
Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Re,

La fonction INDIRECT ne fonctionne pas sur des classeurs autres que le classeur en cours.

Donc inutile de continuer à chercher, il faut une macro VBA.

On la fera si on a le temps.

Nota : il existe la fonction INDIRECT.EXT dans la macro complémentaire Morefunc de Laurent Longre.

Perso je ne suis pas arrivé à la télécharger sur le web pour Excel 2010.

A+
 
Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Ah d'accord. Je ne le savait pas pour la fonction INDIRECT, merci.

Y'a plus qu'a cherche ailleurs.
Je n'y connait rien en VBA et MACRO.
Merci job75
 
Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Bonjour blade76, le forum,

Voici une solution par macro.

Clic droit sur l'onglet "DQE" et Visualiser le code :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chemin$, fichier$, adr$, r As Range, wb As Workbook, F As Worksheet
chemin = ThisWorkbook.Path 'à adapter
fichier = "SousdétailNEW.xlsx" 'nom à adapter
adr = "A2" 'adresse de la cellule source,à adapter
Set r = Intersect(Target, Range("A3:A" & Rows.Count), Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Set wb = Workbooks(fichier)
If wb Is Nothing Then 'ouverture du fichier
  Set wb = Workbooks.Open(chemin & "\" & fichier)
  ThisWorkbook.Activate
End If
If wb Is Nothing Then MsgBox fichier & " introuvable": Exit Sub
For Each r In r 'si entrées multiples (copier-coller)
  r(1, 3) = "" 'RAZ
  If r.Text <> "" Then
    Set F = Nothing
    Set F = wb.Worksheets(r.Text)
    If F Is Nothing Then r(1, 3) = "Feuille introuvable" Else _
    r(1, 3) = F.Range(adr)
  End If
Next
End Sub
La macro s'exécute quand on entre les noms des feuilles à partir de A3.

Fichiers joints, téléchargez-les tous les deux sur le bureau pour tester.

A+
 

Pièces jointes

Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Re,

Comme il n'y a pas de formules de liaisons, si l'on modifie les cellules sources (A2), les cellules de destination (colonne C) ne se mettent pas à jour .

Voici qui y remédie :

1) dans Module1 la macro principale MAJ est paramétrée :

Code:
Sub MAJ(r As Range)
'-------
End Sub
2) dans le code de la feuille "DQE" :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, Range("A3:A" & Rows.Count), Me.UsedRange)
If Not r Is Nothing Then MAJ r
End Sub
3) dans le code de ThisWorkbook :

Code:
Private Sub Workbook_Activate()
With Sheets("DQE") 'ou le CodeName Feuil4
  With .Range("A3", .Cells(.Rows.Count, 1).End(xlUp))
    If .Row > 2 Then MAJ .Cells
  End With
End With
End Sub
Fichier (2).

A+
 

Pièces jointes

Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Bonsoir job75, le forum, je te remercie du temps et du travail que tu as passé à cette macro, mais je n'y connais rien et du coup ne comprends pas ce langage VBA.

J'ai testé ta première solution et elle fonctionne bien car j'ai créé une autre feuille test et ça va bien chercher l'info, c'est cool il faut que je m'y attèle à apprendre les macros et VBA.
Sinon,
En plus tu sais que Excel est compliqué un peu comme moi car je ne t'ai pas tout dit sur la formule que je souhaite réellement parce que je pensais que ce serait une formule du genre =si(.........;indirect.....), enfin bref.

Donc la formule parfaite serait que quand j'écris "plus" dans le classeur [DéboursesecNEW], feuille (DQE), cellule "A2".
Irait me chercher dans le classeur [SousdétailNEW], feuille (plus](ou autre), la cellule "B2" en "C2" (ça c'est ce que tu as réussi à faire), mais aussi la cellule "E2" en "D2", la cellule "H45" en "F2" et la dernière la cellule "C45" en "K2".

Voilà ma misère

Je vous remercie de votre aide.
 
Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Re,

Irait me chercher dans le classeur [SousdétailNEW], feuille (plus](ou autre), la cellule "B2" en "C2" (ça c'est ce que tu as réussi à faire), mais aussi la cellule "E2" en "D2", la cellule "H45" en "F2" et la dernière la cellule "C45" en "K2".

Aucun problème, je vous ferai ça demain.

Juste une chose, je pense que vous voulez dire :

Irait me chercher dans le classeur [SousdétailNEW], feuille (plus](ou autre), la cellule "A2" en "C2"

A+
 
Re : Chercher une cellule dans autre classeur mais pas dans la même F de calcul

Bonjour blade76, le forum,

Voici la macro MAJ adaptée pour les 4 cellules sources :

Code:
Sub MAJ(r As Range)
Dim chemin$, fichier$, source, dest, ub As Byte
Dim wb As Workbook, F As Worksheet, L&, i As Byte
chemin = ThisWorkbook.Path 'à adapter
fichier = "SousdétailNEW.xlsx" 'nom à adapter
source = Array("A2", "E2", "H45", "C45") 'cellules sources
dest = Array("C", "D", "F", "K") 'colonnes de destination
ub = UBound(source)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Set wb = Workbooks(fichier)
If wb Is Nothing Then 'ouverture du fichier
  Set wb = Workbooks.Open(chemin & "\" & fichier)
  ThisWorkbook.Activate
End If
If wb Is Nothing Then MsgBox fichier & " introuvable": Exit Sub
For Each r In r 'si entrées multiples (copier-coller)
  Set F = Nothing
  Set F = wb.Worksheets(r.Text)
  L = r.Row
  With r.Parent
    For i = 0 To ub
      If F Is Nothing Then .Cells(L, dest(i)) = "" Else _
        .Cells(L, dest(i)) = F.Range(source(i))
    Next
    If F Is Nothing And r.Text <> "" Then _
      .Cells(L, dest(0)) = "Feuille introuvable"
  End With
Next
End Sub
Edit : j'avais oublié de préciser la feuille avec With r.Parent

J'ai aussi remplacé "A3" par "A2" dans les codes de la feuille "DQE" et dans ThisWorkbook.

Fichier (3).

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour