Comparaison de cellules de classeurs differents

Résolu
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022 - 26 févr. 2009 à 09:52
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 27 févr. 2009 à 19:22
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

cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 1
26 févr. 2009 à 13:38
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
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 févr. 2009 à 10:19
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)
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 févr. 2009 à 10:37
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)
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
26 févr. 2009 à 13:44
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 févr. 2009 à 19:22
Intéressant
Mais comment fais-tu cela :
   Resultat = Application.Min(Val1, Val2)

ah si :   Application.WorksheetFunction.Min
Rejoignez-nous