comparer la valeur d'une cellule d'un classeur à une plage d'un autre classeur VBA ex

  • Initiateur de la discussion Initiateur de la discussion hking
  • 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 !

hking

XLDnaute Nouveau
Bonjour à tous
J'ai deux classeurs ayant pour nom respectivement "inman" et "Rapport in".
Jai besoin de comparer la valeur de la cellule A1 du classeur "inmac" à la plage ("A2:AF2") du classeur "Rapport in" en VBA; si la valeur de A1 correspond à une valeur de la plage ("A2:AF2") alors qu'il affiche un message "ok".
Merci d'avance à tous et je conte sur votre réactivité.
Cdlt🙂!!!!!!!!!!!!
 
Re : comparer la valeur d'une cellule d'un classeur à une plage d'un autre classeur V

Bonjour hking, bienvenue sur XLD, salut Marc L,

Car une simple formule de calculs peut s'en acquitter …

Oui, et on a le choix entre SOMMEPROD et EQUIV.

Ouvrez les 2 classeurs et entrez dans la même feuille que la cellule A1 :

Code:
=REPT("OK";SIGNE(SOMMEPROD(N('[Rapport in.xlsx]Feuil1'!$A$2:$AF$2=A1))))
ou encore :

Code:
=REPT("OK";ESTNUM(EQUIV(A1;'[Rapport in.xlsx]Feuil1'!$A$2:$AF$2;0)))
On peut fermer Rapport in.xlsx : ces formules fonctionnent toujours.

A+
 
Re : comparer la valeur d'une cellule d'un classeur à une plage d'un autre classeur V

Re,

En VBA on pourra pour tester utiliser l'une de ces deux macros :

Code:
Sub Test1()
Dim f As String, e As Byte
f = ActiveSheet.Name
e = ExecuteExcel4Macro("SUMPRODUCT(N('" & f & "'!R1C1='" & _
  ThisWorkbook.Path & "\[Rapport in.xlsx]Feuil1'!R2C1:R2C32))")
If e Then MsgBox "OK"
End Sub


Sub Test2()
Dim f As String, e As Boolean
f = ActiveSheet.Name
e = ExecuteExcel4Macro("ISNUMBER(MATCH('" & f & "'!R1C1,'" & _
  ThisWorkbook.Path & "\[Rapport in.xlsx]Feuil1'!R2C1:R2C32,0))")
If e Then MsgBox "OK"
End Sub
Elles fonctionnent avec Rapport in.xlsx ouvert ou fermé.

Mais les 2 fichiers doivent être dans le même dossier (répertoire).

Bonne fin de soirée.
 
Re : comparer la valeur d'une cellule d'un classeur à une plage d'un autre classeur V

Bonjour hking, le forum,

On peut mettre les macros dans un 3ème fichier "Fichier de test" :

Code:
Sub Test1()
Dim chemin1$, fichier1$, feuille1$, adresse1$
Dim chemin2, fichier2$, feuille2$, adresse2$, cellule$, e As Byte
chemin1 = ThisWorkbook.Path 'à adapter
fichier1 = "inmac.xlsx"
feuille1 = "Ma feuille"
adresse1 = "R1C1"
chemin2 = ThisWorkbook.Path 'à adapter
fichier2 = "Rapport in.xlsx"
feuille2 = "Feuil1"
adresse2 = "R2C1:R2C32"
cellule = "'" & chemin1 & "\[" & fichier1 & "]" & feuille1 & "'!" & adresse1
e = ExecuteExcel4Macro("SUMPRODUCT(N(" & cellule & "='" & _
  chemin2 & "\[" & fichier2 & "]" & feuille2 & "'!" & adresse2 & "))")
MsgBox "'" & ExecuteExcel4Macro(cellule) & IIf(e, "' présent", "' absent")
End Sub


Sub Test2()
Dim chemin1$, fichier1$, feuille1$, adresse1$
Dim chemin2, fichier2$, feuille2$, adresse2$, cellule$, e As Boolean
chemin1 = ThisWorkbook.Path 'à adapter
fichier1 = "inmac.xlsx"
feuille1 = "Ma feuille"
adresse1 = "R1C1"
chemin2 = ThisWorkbook.Path 'à adapter
fichier2 = "Rapport in.xlsx"
feuille2 = "Feuil1"
adresse2 = "R2C1:R2C32"
cellule = "'" & chemin1 & "\[" & fichier1 & "]" & feuille1 & "'!" & adresse1
e = ExecuteExcel4Macro("ISNUMBER(MATCH(" & cellule & ",'" & _
  chemin2 & "\[" & fichier2 & "]" & feuille2 & "'!" & adresse2 & ",0))")
MsgBox "'" & ExecuteExcel4Macro(cellule) & IIf(e, "' présent", "' absent")
End Sub
Pour tester mettez les 3 fichiers joints dans le même dossier (le bureau).

A+
 

Pièces jointes

- 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

Discussions similaires

Retour