XL 2019 Fonction diff dans macro transfert resultat feuilleBonjour

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

Hoareau

XLDnaute Occasionnel
Bonjour

J'ai incorporé la fonction diff de Boisgonthier dans une macro, mais je ne réussi pas à transférer le résultat sur la feuille
si la fonction est appliquée directement sur la feuille c'est bon

Mais incorporée dans un code
erreur byref si changée byval plus de message mais pas d'affichage

c'est une matricielle donc c;offset'0,5) = evaluate(diff(plage_1,Plage_2)


Différence entre 2 listes
Dans un module (alt+F11 Insertion/Module)
Function Diff(champ1 As Range, champ2 As Range)
Set MonDico1 = CreateObject("Scripting.Dictionary")
a = champ1.Value
b = champ2.Value
For Each c In b: MonDico1(c) = c: Next c
Set mondico2 = CreateObject("Scripting.Dictionary")
For Each c In a
If Not MonDico1.Exists(c) Then mondico2(c) = c
Next c
Dim d()
ReDim d(1 To Application.Caller.Rows.Count)
i = 1
For Each c In mondico2.items
d(i) = c
i = i + 1
Next c
Diff = Application.Transpose(d)
End Function


merci
 
Bonjour Hoareau,
C'est application.caller qui est censé être renvoyée de la feuille qui pose problème.
On peut résoudre le problème en remplaçant le Redim par : ReDim d(1 To mondico2.Count)
On appelle la fonction par ex par :
D = Diff(Sheets("aaa").Range("D21😀24"), Sheets("aaa").Range("E21:E24"))
( D est une matrice qui comporte les éléments absents )
 
bonjour
cela ne passe passe pas, erreur l'indice n'appartient pas à la sélection et me renvoi vers ReDim d(1 To mondico2.Count)
j'ai essayé aussi avec evaluate parce que c'est une matricielle, rien n'y fait

Sub text()
Sheets("feuil1").Select
[G10] = Diff(Range("d7:d10"), Range("d8:d10"))
End Sub
 
pour moi, ce que cela renvoi st faux


J'ai aussi essayé de transformer communs du même auteur, pour l'inserer dans une macro
c.Offset(0, 5) = Communs(Course_Jour, Num_diff_X_Dernieres_Courses, c.Offset(0, 5))
a la place de location, il avait une cellule fixe
j'essai un peu tout et n'importe quoi
Function Communs(ByVal Plage_1 As Range, ByVal Plage_2 As Range, location As Range)
a = Plage_1.Value
Set MonDico1 = CreateObject("Scripting.Dictionary")
For Each c In a
MonDico1(c) = ""
Next c
b = Plage_2.Value
Set mondico2 = CreateObject("Scripting.Dictionary")
For Each c In b
If MonDico1.Exists(c) Then If Not mondico2.Exists(c) Then mondico2(c) = ""
Next c
location.Resize(mondico2.Count, 1) = Application.Transpose(mondico2.keys)
End Function
 

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

Réponses
4
Affichages
177
Réponses
9
Affichages
580
Retour