Bonjour,
dans un tableau assez gros, je cherche le n° de ligne selon deux critères
correspondant à deux colonnes.
Le code suivant ne fonctionne pas :
...
Dim ClientCt As Variant
Dim RefCt As String
Dim toto As Variant
Dim titi As Variant
...
toto = Range("A36:A" & LastRow)
titi = Range("B36:B" & LastRow)
If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt)
* (titi = RefCt), 0)) Then
...
>>> erreur d'excécution 13 Incompatibilité de type...
la même fonction sous excel fonctionne :
=EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12" car la
colonne est formatée texte.
Merci pour toute aide.
Dim toto As Range Dim titi As Range ... Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow) If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) * (titi = RefCt), 0)) Then
Bonjour, dans un tableau assez gros, je cherche le n° de ligne selon deux critères correspondant à deux colonnes. Le code suivant ne fonctionne pas : ... Dim ClientCt As Variant Dim RefCt As String Dim toto As Variant Dim titi As Variant ... toto = Range("A36:A" & LastRow) titi = Range("B36:B" & LastRow) If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) * (titi = RefCt), 0)) Then ...
erreur d'excécution 13 Incompatibilité de type...
la même fonction sous excel fonctionne : =EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12" car la colonne est formatée texte. Merci pour toute aide.
Bonjour.
Essaie :
Dim toto As Range
Dim titi As Range
...
Set toto = Range("A36:A" & LastRow)
Set titi = Range("B36:B" & LastRow)
If WorksheetFunction.IsNA(Application.Match(1, (toto =
ClientCt)
* (titi = RefCt), 0)) Then
Bonjour,
dans un tableau assez gros, je cherche le n° de ligne selon deux critères
correspondant à deux colonnes.
Le code suivant ne fonctionne pas :
...
Dim ClientCt As Variant
Dim RefCt As String
Dim toto As Variant
Dim titi As Variant
...
toto = Range("A36:A" & LastRow)
titi = Range("B36:B" & LastRow)
If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt)
* (titi = RefCt), 0)) Then
...
erreur d'excécution 13 Incompatibilité de type...
la même fonction sous excel fonctionne :
=EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12" car la
colonne est formatée texte.
Merci pour toute aide.
Dim toto As Range Dim titi As Range ... Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow) If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) * (titi = RefCt), 0)) Then
Bonjour, dans un tableau assez gros, je cherche le n° de ligne selon deux critères correspondant à deux colonnes. Le code suivant ne fonctionne pas : ... Dim ClientCt As Variant Dim RefCt As String Dim toto As Variant Dim titi As Variant ... toto = Range("A36:A" & LastRow) titi = Range("B36:B" & LastRow) If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) * (titi = RefCt), 0)) Then ...
erreur d'excécution 13 Incompatibilité de type...
la même fonction sous excel fonctionne : =EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12" car la colonne est formatée texte. Merci pour toute aide.
JB
Bonsoir,
Recherche matricielle 2 critères
http://boisgontierjacques.free.fr/pages_site/cellules.htm#RechercheMatrciel le
JB
On 9 mar, 19:20, ke78ke wrote:
Bonjour, dans un tableau assez gros, je cherche le n° de ligne selon deux crit ères correspondant à deux colonnes. Le code suivant ne fonctionne pas : ... Dim ClientCt As Variant Dim RefCt As String Dim toto As Variant Dim titi As Variant ... toto = Range("A36:A" & LastRow) titi = Range("B36:B" & LastRow) If WorksheetFunction.IsNA(Application.Match(1, (t oto = ClientCt) * (titi = RefCt), 0)) Then ...>>> erreur d'excécution 13 Incompatibilité de type...
la même fonction sous excel fonctionne : =EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12 " car la colonne est formatée texte. Merci pour toute aide.
Bonsoir,
Recherche matricielle 2 critères
http://boisgontierjacques.free.fr/pages_site/cellules.htm#RechercheMatrciel le
JB
On 9 mar, 19:20, ke78ke <ke7...@discussions.microsoft.com> wrote:
Bonjour,
dans un tableau assez gros, je cherche le n° de ligne selon deux crit ères
correspondant à deux colonnes.
Le code suivant ne fonctionne pas :
...
Dim ClientCt As Variant
Dim RefCt As String
Dim toto As Variant
Dim titi As Variant
...
toto = Range("A36:A" & LastRow)
titi = Range("B36:B" & LastRow)
If WorksheetFunction.IsNA(Application.Match(1, (t oto = ClientCt)
* (titi = RefCt), 0)) Then
...>>> erreur d'excécution 13 Incompatibilité de type...
la même fonction sous excel fonctionne :
=EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12 " car la
colonne est formatée texte.
Merci pour toute aide.
http://boisgontierjacques.free.fr/pages_site/cellules.htm#RechercheMatrciel le
JB
On 9 mar, 19:20, ke78ke wrote:
Bonjour, dans un tableau assez gros, je cherche le n° de ligne selon deux crit ères correspondant à deux colonnes. Le code suivant ne fonctionne pas : ... Dim ClientCt As Variant Dim RefCt As String Dim toto As Variant Dim titi As Variant ... toto = Range("A36:A" & LastRow) titi = Range("B36:B" & LastRow) If WorksheetFunction.IsNA(Application.Match(1, (t oto = ClientCt) * (titi = RefCt), 0)) Then ...>>> erreur d'excécution 13 Incompatibilité de type...
la même fonction sous excel fonctionne : =EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12 " car la colonne est formatée texte. Merci pour toute aide.
ke78ke
Merci, c'est en effet simple comme bonjour ! Je doi être un peu fâché avec les ranges dans VBA... Je n'ai pas encore trouvé un bouquin qui soit suffisamment clair pour ma petite tête, le Walkenbach est trop touffu... Bonne journée.
"Daniel.C" wrote:
Bonjour. Essaie :
Dim toto As Range Dim titi As Range .... Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow) If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) * (titi = RefCt), 0)) Then
> Bonjour, > dans un tableau assez gros, je cherche le n° de ligne selon deux critères > correspondant à deux colonnes. > Le code suivant ne fonctionne pas : > ... > Dim ClientCt As Variant > Dim RefCt As String > Dim toto As Variant > Dim titi As Variant > ... > toto = Range("A36:A" & LastRow) > titi = Range("B36:B" & LastRow) > If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) > * (titi = RefCt), 0)) Then > ... >>>> erreur d'excécution 13 Incompatibilité de type... > la même fonction sous excel fonctionne : > =EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12" car la > colonne est formatée texte. > Merci pour toute aide.
.
Merci, c'est en effet simple comme bonjour ! Je doi être un peu fâché avec
les ranges dans VBA... Je n'ai pas encore trouvé un bouquin qui soit
suffisamment clair pour ma petite tête, le Walkenbach est trop touffu...
Bonne journée.
"Daniel.C" wrote:
Bonjour.
Essaie :
Dim toto As Range
Dim titi As Range
....
Set toto = Range("A36:A" & LastRow)
Set titi = Range("B36:B" & LastRow)
If WorksheetFunction.IsNA(Application.Match(1, (toto =
ClientCt)
* (titi = RefCt), 0)) Then
> Bonjour,
> dans un tableau assez gros, je cherche le n° de ligne selon deux critères
> correspondant à deux colonnes.
> Le code suivant ne fonctionne pas :
> ...
> Dim ClientCt As Variant
> Dim RefCt As String
> Dim toto As Variant
> Dim titi As Variant
> ...
> toto = Range("A36:A" & LastRow)
> titi = Range("B36:B" & LastRow)
> If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt)
> * (titi = RefCt), 0)) Then
> ...
>>>> erreur d'excécution 13 Incompatibilité de type...
> la même fonction sous excel fonctionne :
> =EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12" car la
> colonne est formatée texte.
> Merci pour toute aide.
Merci, c'est en effet simple comme bonjour ! Je doi être un peu fâché avec les ranges dans VBA... Je n'ai pas encore trouvé un bouquin qui soit suffisamment clair pour ma petite tête, le Walkenbach est trop touffu... Bonne journée.
"Daniel.C" wrote:
Bonjour. Essaie :
Dim toto As Range Dim titi As Range .... Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow) If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) * (titi = RefCt), 0)) Then
> Bonjour, > dans un tableau assez gros, je cherche le n° de ligne selon deux critères > correspondant à deux colonnes. > Le code suivant ne fonctionne pas : > ... > Dim ClientCt As Variant > Dim RefCt As String > Dim toto As Variant > Dim titi As Variant > ... > toto = Range("A36:A" & LastRow) > titi = Range("B36:B" & LastRow) > If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) > * (titi = RefCt), 0)) Then > ... >>>> erreur d'excécution 13 Incompatibilité de type... > la même fonction sous excel fonctionne : > =EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12" car la > colonne est formatée texte. > Merci pour toute aide.
.
ke78ke
Merci, solution très élégante ... et plein de bonnes choses dans le reste de la page ! bonne journée.
On 9 mar, 19:20, ke78ke wrote: > Bonjour, > dans un tableau assez gros, je cherche le n° de ligne selon deux critères > correspondant à deux colonnes. > Le code suivant ne fonctionne pas : > ... > Dim ClientCt As Variant > Dim RefCt As String > Dim toto As Variant > Dim titi As Variant > ... > toto = Range("A36:A" & LastRow) > titi = Range("B36:B" & LastRow) > If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) > * (titi = RefCt), 0)) Then > ...>>> erreur d'excécution 13 Incompatibilité de type... > > la même fonction sous excel fonctionne : > =EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12" car la > colonne est formatée texte. > Merci pour toute aide.
.
Merci, solution très élégante ...
et plein de bonnes choses dans le reste de la page ! bonne journée.
On 9 mar, 19:20, ke78ke <ke7...@discussions.microsoft.com> wrote:
> Bonjour,
> dans un tableau assez gros, je cherche le n° de ligne selon deux critères
> correspondant à deux colonnes.
> Le code suivant ne fonctionne pas :
> ...
> Dim ClientCt As Variant
> Dim RefCt As String
> Dim toto As Variant
> Dim titi As Variant
> ...
> toto = Range("A36:A" & LastRow)
> titi = Range("B36:B" & LastRow)
> If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt)
> * (titi = RefCt), 0)) Then
> ...>>> erreur d'excécution 13 Incompatibilité de type...
>
> la même fonction sous excel fonctionne :
> =EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12" car la
> colonne est formatée texte.
> Merci pour toute aide.
On 9 mar, 19:20, ke78ke wrote: > Bonjour, > dans un tableau assez gros, je cherche le n° de ligne selon deux critères > correspondant à deux colonnes. > Le code suivant ne fonctionne pas : > ... > Dim ClientCt As Variant > Dim RefCt As String > Dim toto As Variant > Dim titi As Variant > ... > toto = Range("A36:A" & LastRow) > titi = Range("B36:B" & LastRow) > If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) > * (titi = RefCt), 0)) Then > ...>>> erreur d'excécution 13 Incompatibilité de type... > > la même fonction sous excel fonctionne : > =EQUIV(1;(A36:A41532="12")*(B36:B41532="as");0). Je dois mettre "12" car la > colonne est formatée texte. > Merci pour toute aide.
.
ke78ke
Trop vite parlé...avant d'essayer ! j'ai toujours le même message (erreur 13 incompatibilité de type) lorsque le nombre d 'éléments du range de toto ou titi est supérieur à 1 lors de l'exécution de l'instruction Match... tout se passe comme si VBA ne comprenait pas que l'expression est matricielle, et m'indique qu'il est impossible de comparer un vecteur et un scalaire... Faut-il que je crée un vecteur de même dimension que toto dont chaque élément vaudrait ClientCt, créer le vecteur vrai/faux de même dimension les comparant, idem avec titi / RefCt puis rentrer dans Match le produit de ces deux vecteurs ??? cela me semble bien lourd... Please, help me ! - Dim RefCt As String Dim RefSt As String Dim ClientCt As Variant Dim ClientSt As Variant Dim toto As Range Dim titi As Range ... RefSt = Range("B" & Nb_Of_Old + 2).Value ClientSt = Range("A" & Nb_Of_Old + 2).Value ... RefCt = RefSt ClientCt = ClientSt ... LastRow = Range("A34").End(xlDown).Row + 1 Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow)
Trop vite parlé...avant d'essayer !
j'ai toujours le même message (erreur 13 incompatibilité de type) lorsque le
nombre d 'éléments du range de toto ou titi est supérieur à 1 lors de
l'exécution de l'instruction Match... tout se passe comme si VBA ne
comprenait pas que l'expression est matricielle, et m'indique qu'il est
impossible de comparer un vecteur et un scalaire...
Faut-il que je crée un vecteur de même dimension que toto dont chaque
élément vaudrait ClientCt, créer le vecteur vrai/faux de même dimension les
comparant, idem avec titi / RefCt puis rentrer dans Match le produit de ces
deux vecteurs ??? cela me semble bien lourd... Please, help me !
-
Dim RefCt As String
Dim RefSt As String
Dim ClientCt As Variant
Dim ClientSt As Variant
Dim toto As Range
Dim titi As Range
...
RefSt = Range("B" & Nb_Of_Old + 2).Value
ClientSt = Range("A" & Nb_Of_Old + 2).Value
...
RefCt = RefSt
ClientCt = ClientSt
...
LastRow = Range("A34").End(xlDown).Row + 1
Set toto = Range("A36:A" & LastRow)
Set titi = Range("B36:B" & LastRow)
Trop vite parlé...avant d'essayer ! j'ai toujours le même message (erreur 13 incompatibilité de type) lorsque le nombre d 'éléments du range de toto ou titi est supérieur à 1 lors de l'exécution de l'instruction Match... tout se passe comme si VBA ne comprenait pas que l'expression est matricielle, et m'indique qu'il est impossible de comparer un vecteur et un scalaire... Faut-il que je crée un vecteur de même dimension que toto dont chaque élément vaudrait ClientCt, créer le vecteur vrai/faux de même dimension les comparant, idem avec titi / RefCt puis rentrer dans Match le produit de ces deux vecteurs ??? cela me semble bien lourd... Please, help me ! - Dim RefCt As String Dim RefSt As String Dim ClientCt As Variant Dim ClientSt As Variant Dim toto As Range Dim titi As Range ... RefSt = Range("B" & Nb_Of_Old + 2).Value ClientSt = Range("A" & Nb_Of_Old + 2).Value ... RefCt = RefSt ClientCt = ClientSt ... LastRow = Range("A34").End(xlDown).Row + 1 Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow)
J'avais répondu trop vite... Comme pour la solution proposée par Daniel C., j'ai essayé la méthode avec pos = Evaluate("Match... puis range().Offset(pos... ça plante quand même à Match avec la même erreur d'incompatibilité de type, sauf quand le range de toto et titi se limite à un élément... Merci devotre aide !
J'avais répondu trop vite...
Comme pour la solution proposée par Daniel C., j'ai essayé la méthode avec
pos = Evaluate("Match... puis range().Offset(pos...
ça plante quand même à Match avec la même erreur d'incompatibilité de type,
sauf quand le range de toto et titi se limite à un élément...
Merci devotre aide !
J'avais répondu trop vite... Comme pour la solution proposée par Daniel C., j'ai essayé la méthode avec pos = Evaluate("Match... puis range().Offset(pos... ça plante quand même à Match avec la même erreur d'incompatibilité de type, sauf quand le range de toto et titi se limite à un élément... Merci devotre aide !
Daniel.C
Essaie :
Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow) If Evaluate("SumProduct((" & toto.Address & "=""" & _ ClientCt & """)*(" & titi.Address & "=""" & RefCt & """))") > 0 Then
Daniel
Trop vite parlé...avant d'essayer ! j'ai toujours le même message (erreur 13 incompatibilité de type) lorsque le nombre d 'éléments du range de toto ou titi est supérieur à 1 lors de l'exécution de l'instruction Match... tout se passe comme si VBA ne comprenait pas que l'expression est matricielle, et m'indique qu'il est impossible de comparer un vecteur et un scalaire... Faut-il que je crée un vecteur de même dimension que toto dont chaque élément vaudrait ClientCt, créer le vecteur vrai/faux de même dimension les comparant, idem avec titi / RefCt puis rentrer dans Match le produit de ces deux vecteurs ??? cela me semble bien lourd... Please, help me ! - Dim RefCt As String Dim RefSt As String Dim ClientCt As Variant Dim ClientSt As Variant Dim toto As Range Dim titi As Range ... RefSt = Range("B" & Nb_Of_Old + 2).Value ClientSt = Range("A" & Nb_Of_Old + 2).Value ... RefCt = RefSt ClientCt = ClientSt ... LastRow = Range("A34").End(xlDown).Row + 1 Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow)
Set toto = Range("A36:A" & LastRow)
Set titi = Range("B36:B" & LastRow)
If Evaluate("SumProduct((" & toto.Address & "=""" & _
ClientCt & """)*(" & titi.Address & "=""" & RefCt & """))") > 0 Then
Daniel
Trop vite parlé...avant d'essayer !
j'ai toujours le même message (erreur 13 incompatibilité de type) lorsque le
nombre d 'éléments du range de toto ou titi est supérieur à 1 lors de
l'exécution de l'instruction Match... tout se passe comme si VBA ne
comprenait pas que l'expression est matricielle, et m'indique qu'il est
impossible de comparer un vecteur et un scalaire...
Faut-il que je crée un vecteur de même dimension que toto dont chaque
élément vaudrait ClientCt, créer le vecteur vrai/faux de même dimension les
comparant, idem avec titi / RefCt puis rentrer dans Match le produit de ces
deux vecteurs ??? cela me semble bien lourd... Please, help me !
-
Dim RefCt As String
Dim RefSt As String
Dim ClientCt As Variant
Dim ClientSt As Variant
Dim toto As Range
Dim titi As Range
...
RefSt = Range("B" & Nb_Of_Old + 2).Value
ClientSt = Range("A" & Nb_Of_Old + 2).Value
...
RefCt = RefSt
ClientCt = ClientSt
...
LastRow = Range("A34").End(xlDown).Row + 1
Set toto = Range("A36:A" & LastRow)
Set titi = Range("B36:B" & LastRow)
Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow) If Evaluate("SumProduct((" & toto.Address & "=""" & _ ClientCt & """)*(" & titi.Address & "=""" & RefCt & """))") > 0 Then
Daniel
Trop vite parlé...avant d'essayer ! j'ai toujours le même message (erreur 13 incompatibilité de type) lorsque le nombre d 'éléments du range de toto ou titi est supérieur à 1 lors de l'exécution de l'instruction Match... tout se passe comme si VBA ne comprenait pas que l'expression est matricielle, et m'indique qu'il est impossible de comparer un vecteur et un scalaire... Faut-il que je crée un vecteur de même dimension que toto dont chaque élément vaudrait ClientCt, créer le vecteur vrai/faux de même dimension les comparant, idem avec titi / RefCt puis rentrer dans Match le produit de ces deux vecteurs ??? cela me semble bien lourd... Please, help me ! - Dim RefCt As String Dim RefSt As String Dim ClientCt As Variant Dim ClientSt As Variant Dim toto As Range Dim titi As Range ... RefSt = Range("B" & Nb_Of_Old + 2).Value ClientSt = Range("A" & Nb_Of_Old + 2).Value ... RefCt = RefSt ClientCt = ClientSt ... LastRow = Range("A34").End(xlDown).Row + 1 Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow)
Ou plutôt, pour suivre ta commande, mets "=0" au lieu de ">0". Daniel
Essaie :
Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow) If Evaluate("SumProduct((" & toto.Address & "=""" & _ ClientCt & """)*(" & titi.Address & "=""" & RefCt & """))") > 0 Then
Daniel
Trop vite parlé...avant d'essayer ! j'ai toujours le même message (erreur 13 incompatibilité de type) lorsque le nombre d 'éléments du range de toto ou titi est supérieur à 1 lors de l'exécution de l'instruction Match... tout se passe comme si VBA ne comprenait pas que l'expression est matricielle, et m'indique qu'il est impossible de comparer un vecteur et un scalaire... Faut-il que je crée un vecteur de même dimension que toto dont chaque élément vaudrait ClientCt, créer le vecteur vrai/faux de même dimension les comparant, idem avec titi / RefCt puis rentrer dans Match le produit de ces deux vecteurs ??? cela me semble bien lourd... Please, help me ! - Dim RefCt As String Dim RefSt As String Dim ClientCt As Variant Dim ClientSt As Variant Dim toto As Range Dim titi As Range ... RefSt = Range("B" & Nb_Of_Old + 2).Value ClientSt = Range("A" & Nb_Of_Old + 2).Value ... RefCt = RefSt ClientCt = ClientSt ... LastRow = Range("A34").End(xlDown).Row + 1 Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow) If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) * (titi = RefCt), 0)) Then i_Ex = Application.WorksheetFunction.Count(toto) + 36 Range("A" & i_Ex) = ClientCt Range("B" & i_Ex) = RefCt Else i_Ex = Application.Match(1, (toto = ClientCt) * (titi = RefCt), 0) + 35 End If
Ou plutôt, pour suivre ta commande, mets "=0" au lieu de ">0".
Daniel
Essaie :
Set toto = Range("A36:A" & LastRow)
Set titi = Range("B36:B" & LastRow)
If Evaluate("SumProduct((" & toto.Address & "=""" & _
ClientCt & """)*(" & titi.Address & "=""" & RefCt & """))") > 0 Then
Daniel
Trop vite parlé...avant d'essayer !
j'ai toujours le même message (erreur 13 incompatibilité de type) lorsque
le nombre d 'éléments du range de toto ou titi est supérieur à 1 lors de
l'exécution de l'instruction Match... tout se passe comme si VBA ne
comprenait pas que l'expression est matricielle, et m'indique qu'il est
impossible de comparer un vecteur et un scalaire...
Faut-il que je crée un vecteur de même dimension que toto dont chaque
élément vaudrait ClientCt, créer le vecteur vrai/faux de même dimension les
comparant, idem avec titi / RefCt puis rentrer dans Match le produit de ces
deux vecteurs ??? cela me semble bien lourd... Please, help me !
-
Dim RefCt As String
Dim RefSt As String
Dim ClientCt As Variant
Dim ClientSt As Variant
Dim toto As Range
Dim titi As Range
...
RefSt = Range("B" & Nb_Of_Old + 2).Value
ClientSt = Range("A" & Nb_Of_Old + 2).Value
...
RefCt = RefSt
ClientCt = ClientSt
...
LastRow = Range("A34").End(xlDown).Row + 1
Set toto = Range("A36:A" & LastRow)
Set titi = Range("B36:B" & LastRow)
If
WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) * (titi =
RefCt), 0)) Then
i_Ex = Application.WorksheetFunction.Count(toto) + 36
Range("A" & i_Ex) = ClientCt
Range("B" & i_Ex) = RefCt
Else
i_Ex = Application.Match(1, (toto = ClientCt) * (titi = RefCt), 0) +
35
End If
Ou plutôt, pour suivre ta commande, mets "=0" au lieu de ">0". Daniel
Essaie :
Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow) If Evaluate("SumProduct((" & toto.Address & "=""" & _ ClientCt & """)*(" & titi.Address & "=""" & RefCt & """))") > 0 Then
Daniel
Trop vite parlé...avant d'essayer ! j'ai toujours le même message (erreur 13 incompatibilité de type) lorsque le nombre d 'éléments du range de toto ou titi est supérieur à 1 lors de l'exécution de l'instruction Match... tout se passe comme si VBA ne comprenait pas que l'expression est matricielle, et m'indique qu'il est impossible de comparer un vecteur et un scalaire... Faut-il que je crée un vecteur de même dimension que toto dont chaque élément vaudrait ClientCt, créer le vecteur vrai/faux de même dimension les comparant, idem avec titi / RefCt puis rentrer dans Match le produit de ces deux vecteurs ??? cela me semble bien lourd... Please, help me ! - Dim RefCt As String Dim RefSt As String Dim ClientCt As Variant Dim ClientSt As Variant Dim toto As Range Dim titi As Range ... RefSt = Range("B" & Nb_Of_Old + 2).Value ClientSt = Range("A" & Nb_Of_Old + 2).Value ... RefCt = RefSt ClientCt = ClientSt ... LastRow = Range("A34").End(xlDown).Row + 1 Set toto = Range("A36:A" & LastRow) Set titi = Range("B36:B" & LastRow) If WorksheetFunction.IsNA(Application.Match(1, (toto = ClientCt) * (titi = RefCt), 0)) Then i_Ex = Application.WorksheetFunction.Count(toto) + 36 Range("A" & i_Ex) = ClientCt Range("B" & i_Ex) = RefCt Else i_Ex = Application.Match(1, (toto = ClientCt) * (titi = RefCt), 0) + 35 End If
J'avais répondu trop vite... Comme pour la solution proposée par Daniel C., j'ai essayé la métho de avec pos = Evaluate("Match... puis range().Offset(pos... ça plante quand même à Match avec la même erreur d'incompatibilit é de type, sauf quand le range de toto et titi se limite à un élément... Merci devotre aide !
On 16 mar, 14:23, ke78ke <ke7...@discussions.microsoft.com> wrote:
J'avais répondu trop vite...
Comme pour la solution proposée par Daniel C., j'ai essayé la métho de avec
pos = Evaluate("Match... puis range().Offset(pos...
ça plante quand même à Match avec la même erreur d'incompatibilit é de type,
sauf quand le range de toto et titi se limite à un élément...
Merci devotre aide !
J'avais répondu trop vite... Comme pour la solution proposée par Daniel C., j'ai essayé la métho de avec pos = Evaluate("Match... puis range().Offset(pos... ça plante quand même à Match avec la même erreur d'incompatibilit é de type, sauf quand le range de toto et titi se limite à un élément... Merci devotre aide !
ke78ke
Merci de ta réponse, sumprod() fonctionne en effet pour vérifier que je n'ai aucune occurence sur les deux critères ; dans ce cas j'ajoute une nouvelle ligne à mon tableau ("A36:DF" & LastRow), dont toto et titi sont les deux 1ères colonnes ; mais dans le cas contraire, j'ai besoin de savoir quel est le rang dans le tableau de la ligne répondant aux deux critères (pour la modiifier), et j'utilisais pour celà la même fonction Match()... qui ne marche toujours pas ! Pour la rapidité (je balaye un tableau ~100 x 10.000 dans 13 feuilles), je ne voudrais pas être amené à faire pour chaque feuille, une boucle qui lit toto et titi, fait un test et s'arrête sur la bonne ligne... Match me semblait séduisant... Avec mes remerciements
Merci de ta réponse, sumprod() fonctionne en effet pour vérifier que je n'ai
aucune occurence sur les deux critères ; dans ce cas j'ajoute une nouvelle
ligne à mon tableau ("A36:DF" & LastRow), dont toto et titi sont les deux
1ères colonnes ; mais dans le cas contraire, j'ai besoin de savoir quel est
le rang dans le tableau de la ligne répondant aux deux critères (pour la
modiifier), et j'utilisais pour celà la même fonction Match()... qui ne
marche toujours pas !
Pour la rapidité (je balaye un tableau ~100 x 10.000 dans 13 feuilles), je
ne voudrais pas être amené à faire pour chaque feuille, une boucle qui lit
toto et titi, fait un test et s'arrête sur la bonne ligne... Match me
semblait séduisant...
Avec mes remerciements
Merci de ta réponse, sumprod() fonctionne en effet pour vérifier que je n'ai aucune occurence sur les deux critères ; dans ce cas j'ajoute une nouvelle ligne à mon tableau ("A36:DF" & LastRow), dont toto et titi sont les deux 1ères colonnes ; mais dans le cas contraire, j'ai besoin de savoir quel est le rang dans le tableau de la ligne répondant aux deux critères (pour la modiifier), et j'utilisais pour celà la même fonction Match()... qui ne marche toujours pas ! Pour la rapidité (je balaye un tableau ~100 x 10.000 dans 13 feuilles), je ne voudrais pas être amené à faire pour chaque feuille, une boucle qui lit toto et titi, fait un test et s'arrête sur la bonne ligne... Match me semblait séduisant... Avec mes remerciements