Microsoft 365 match() en vba et multi-critères sur zones nommées

C.Laurent

XLDnaute Nouveau
Supporter XLD
Bonjour à tous

Je tourne en rond sur un problème, en fait j'ai le même problème avec xlookup() mais j'essaye de faire simple avec match() pour l'exemple de cette question, j'imagine que le problème est le même ...

J'ai un tableau (non structuré) dans lequel j'ai nommé les colonnes avec des formules
(pour la colonne nommée OpéCompte) =DECALER(Opérations!$A$5;;;VarNombreOpé;1)
(pour la colonne nommée OpéTitre) =DECALER(Opérations!$C$5;;;VarNombreOpé;1)

Dans le code plus bas, j'utilise la ligne de la cellule active comme référence.
Je cherche dans les lignes au dessus de cette ligne de référence, la première ligne qui a la même valeur que OpéCompte et OpéTitre de cette ligne de référence.

VB:
Sub test()

Dim FeuilleOpé As Worksheet
Dim LeCompte As String
Dim LeTitre As String
Dim RgCompte As Range
Dim RgTitre As Range

Set FeuilleOpé = ThisWorkbook.Worksheets("Opérations")
LeCompte = Intersect(FeuilleOpé.Range("OpéCompte"), FeuilleOpé.Rows(ActiveCell.Row)).Text
LeTitre = Intersect(FeuilleOpé.Range("OpéTitre"), FeuilleOpé.Rows(ActiveCell.Row)).Text

Set RgCompte = Intersect(Rows(Range("5:" & ActiveCell.Row - 1), Range("OpéCompte"))
Set RgTitre = Intersect(Rows(Range("5:" & ActiveCell.Row - 1), Range("OpéTitre"))

MsgBox Application.WorksheetFunction.Match(1, (RgCompte = LeCompte) * (RgTitre = LeTitre), 0)

=> erreur 13, incompatibilité de type :-(

Je crois comprendre que Excel ne comprend pas mes 2 critères.
J'ai lu des suggestions qui proposent de concaténer les champs avec & mais je trouve le code final peu lisible (je n'ai de tout façon pas réussi à mettre en œuvre), je préfère avec ...Match(1,... si c'est possible.

Comment éviter cette erreur ?
Je vous remercie de l'aide que vous m'apporterez.

@+Laurent
 
Solution
d'accords
purée t'es dur en affaire toi
VB:
Sub justePourLeFun()

    Dim Feuille$, LeCompte$, LeTitre$, RgCompte As Range, RgTitre As Range, _
        FeuilleOpé As Worksheet, opc$, opt$

    Feuille = "Opérations"

    Set FeuilleOpé = ThisWorkbook.Worksheets("Opérations")

    LeCompte = Intersect(FeuilleOpé.Range("OpéCompte"), FeuilleOpé.Rows(ActiveCell.Row)).Text

    LeTitre = Intersect(FeuilleOpé.Range("OpéTitre"), FeuilleOpé.Rows(ActiveCell.Row)).Text

    opc = Range("OpéCompte").Resize(ActiveCell.Row - Range("OpéCompte").Row + 1).Address(0, 0)

    opt = Range("OpéTitre").Resize(ActiveCell.Row - Range("OpéTitre").Row + 1).Address(0, 0)

    ColonS = Array(opc, opt)    ' colonne a observer pour les criteres dans le meme ordre...

patricktoulon

XLDnaute Barbatruc
a ben c'est évident ça
après reste a savoir si le gain est rentable
et là il faut prendre en considération la BDD tout du moins sa taille en terme de ligne
pour choisir une méthode ou une autre

comme en 32 bits on a 2 giga de dispos pour l'application excel 3.4 avec le patch KB
et que l'app excel n'en mange que 0.800 le reste est dispo pour le travail de mémoire

en 64 on en a 4 de dispo d'origine
powerquery en prends 2 ,l'app 1.3 (a peu près) tu vois ce qu'il te reste

voilà pourquoi les fonctions natives d'excel/vba (certaines) sont lourdes sur le 64 bits et tournent comme des fusées en 32 bits

maintenant tu sais pourquoi depuis une 10 aines d'années (voir plus) les app sont chronophages et autres)

plus on est aller vers le coeurs multiple plus les app sont devenue gourmandes
il y a encore pas si longtemps j'avais une de mes premières tour montée par mes soins
un amd 1.8 giga de procc avec 4 giga de mémoire avec W7 et office 2007
je tournais plus vite que la tour avec un proc 3.8 giga 4 coeurs AND et 8 giga de mémoire

il y a le fait aussi que les pcs de serie(achetés tout fait dans le commerce) sont des assemblages foutage de gueule ce qui rallenti encore la puissance
par exemple
celui qui met des barette corsaire sur du MSI ben c'est un ane (c'est une question de voltage )
les corsaire vont tres bien avec les Azus
et pour peut que la carte graphique soit intégrée donc depuis XP (accélération matérielle oblige directX et compagnie )ben la mémoire est solicitée encore plus
et j'en passe et des meilleures
 

Discussions similaires

Réponses
12
Affichages
247
Réponses
0
Affichages
148
Réponses
1
Affichages
165

Statistiques des forums

Discussions
312 206
Messages
2 086 227
Membres
103 159
dernier inscrit
FBallea