Comparaison de cellules de classeurs differents [Résolu]

Signaler
Messages postés
150
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
18 janvier 2021
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour,

Voila mon probleme. Je possède 1 classeur (test.xls) sur lequel j'écris ma macro et 2 autres classeurs (source1 et source2.xls) que je dois utiliser pour ma comparaison. Les 3 fichiers sont dans le meme répertoire.
J'aimerais que ma macro compare 2 cellules de source1 (F183) et source2 (F150) et m'inscrive dans test.xls cellule V11 la plus petite valeur des 2.

Merci d'avance de votre aide

5 réponses

Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010

Bonjour Lameche15
Si j'ai bien saisi ton souci, je te propose cette solution

Sub Comparaison()
    Dim Source1 As String, Source2 As String, Test As String
    Dim FichieraOuvrir As String, monNom As String, Chemin As String
    Dim Val1, Val2, Resultat
   
    Application.AskToUpdateLinks = False
   
    Source1 = "Source1.xls"
    Source2 = "Source2.xls"
    Test = "Test.xls"
    With ActiveWorkbook
        Chemin = .Path  'Chemin fichier d'accueil
        monNom = .Name  'Nom fichier d'accueil
    End With
    ' Ouverture du fichier "Source1.xls"
    FichieraOuvrir = Chemin & "" & Source1
    Workbooks.Open FichieraOuvrir, 0, True
    Val1 = ActiveWorkbook.Sheets("???").Range("F183").Value
    ' Fermeture du fichier "Source1.xls"
    Workbooks(Source1).Close False
   
    ' Ouverture du fichier "Source2.xls"
    FichieraOuvrir = Chemin & "" & Source2
    Workbooks.Open FichieraOuvrir, 0, True
    Val2 = ActiveWorkbook.Sheets("???").Range("F150").Value
    ' Fermeture du fichier "Source2.xls"
    Workbooks(Source2).Close False
   
    ' Récupération de la valeur minimum
    Resultat = Application.Min(Val1, Val2)
   
    ' Ecriture dans le fichiet "Test"
    Workbooks(monNom).Sheets(1).Range("A10").Value = Resultat
End Sub

Bye, bye

CNTJC
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Quelle est ta vraie difficulté : Faire référence à une donnée située dans un autre classeur ou faire la comparison de 2 cellules ?
Si tu dis travailler avec plusieurs classeurs, c'est simple :
- Tu ouvres tes deux classeurs dans le même Excel
- Dans le Classeur1, tu commences ta fonction, par exemple avec un =, puis tu vas dans le menu Fenêtre pour changer de classeur et tu cliques sur la cellule de l'autre classeur + touche Entrée
La syntaxe obtenue ressemblera à ça
   =[Classeur1.xls]Feuil1!$B$5

Pour comparer deux valeurs, suffit d'utiliser la fonction MIN

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Désolé, tu parlais de macro :
Exemple de rapatriement de [1]B5 vers [2]A1
  Range("[Classeur2.xls]Feuil1!A1").FormulaR1C1 = "=[Classeur1.xls]Feuil1!R5C2"
ou, pour ta compairison de valeur la plus petite entre [1]B5 et [2]D3
Ici, D3 est dans la feuille 2 mais la macro aussi, donc on ne voit pas la référence au classeur
   Range("[Classeur2.xls]Feuil1!A1").FormulaR1C1 = "=MIN([Classeur1.xls]Feuil1!$B$5;D3)"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
150
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
18 janvier 2021

Merci, super top!

J'étais sur la piste mais le coup du chemin . path, trop top comme ca si je change de repertoire ca continue de marcher et la fonction min m'evite la boucle if else un peu lourde

Merci beaucoup
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Intéressant
Mais comment fais-tu cela :
   Resultat = Application.Min(Val1, Val2)

ah si :   Application.WorksheetFunction.Min