Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problemes avec mes formules (EQUIV, INDEX)

11 réponses
Avatar
Emile63
Bonjour a tous,

Je cherche dans une table de donn=E9es (avec les chiffre 0, 1 ou 2 ),
sur quelle cellule se trouve le chiffre >0, a partir de l=E0 je
recherche si ce chiffre est un 1 ou un 2 (pas +).
Puis utilisant la position ou se situe le chiffre et le chiffre en
question, je l'utilise pour chercher dans une autre table (tarif) le
prix et le multiplier par la quantit=E9e stipul=E9e (0,1,2).
Tous =E7a est bien incompr=E9hensible sans l'exemple ci-joint: ;-)

http://www.cijoint.fr/cjlink.php?file=3Dcj201005/cijHTFiA0E.xls

Je bute sur la formule EQUIV, qui n'acc=E8pte pas quand la cellule est
vide (c'est une possibilit=E9) ou si le chiffre est diff=E9rent de celui
recherch=E9 - je cherche 1 et il y a deux ou z=E9ro... (Voir exemple)

Je vous remercie d'avance pour votre aide,
Cordialement,

Emile

1 réponse

1 2
Avatar
michdenis
Au lieu de faire des formules à rallonge, il serait préférable
de corriger le texte. Pour ce faire, voici une manière de
procéder pour nettoyer les colonnes en question :

Tu copies ce qui suit dans un module standard.
Tu peux lancer la procédure nettoyage aussi souvent que tu désires
c'est très rapide.
Au besoin, utilise l'événement Workbook_Open dans le ThisWorkbook
pour lancer la procédure nettoyage à chaque ouverture de ton classeur.


'--------------------------------------
Sub Nettoyage()
Application.ScreenUpdating = False
Table_Des_Prix
Table_Des_Articles
Application.ScreenUpdating = True
End Sub
'--------------------------------------
Sub Table_Des_Prix()
Dim X, A As Long, B As Long
With Worksheets("Feuil1") 'Nom de la feuille à adapter
With Range("E3:E6" & .Range("B65536").End(xlUp).Row)
x = .Value
For a = 1 To UBound(x, 1)
For b = 1 To UBound(x, 2)
If InStr(1, x(a, b), "vert", vbTextCompare) > 0 Then
x(a, b) = "Clés vertes"
ElseIf InStr(1, x(a, b), "bleu", vbTextCompare) > 0 Then
x(a, b) = "Clés bleues"
ElseIf InStr(1, x(a, b), "jaun", vbTextCompare) > 0 Then
x(a, b) = "Clés jaunes"
ElseIf InStr(1, x(a, b), "roug", vbTextCompare) > 0 Then
x(a, b) = "Clés rouges"
End If
Next
Next
.Value = x
End With
End With
End Sub
'--------------------------------------
Sub Table_Des_Articles()
Dim X, A As Long, B As Long
With Worksheets("Feuil1") 'Nom de la feuille à adapter
With Range("B17:B" & .Range("B65536").End(xlUp).Row)
x = .Value
For a = 1 To UBound(x, 1)
For b = 1 To UBound(x, 2)
If InStr(1, x(a, b), "vert", vbTextCompare) > 0 Then
x(a, b) = "Vertes"
ElseIf InStr(1, x(a, b), "bleu", vbTextCompare) > 0 Then
x(a, b) = "Bleues"
ElseIf InStr(1, x(a, b), "jaun", vbTextCompare) > 0 Then
x(a, b) = "Jaunes"
ElseIf InStr(1, x(a, b), "roug", vbTextCompare) > 0 Then
x(a, b) = "Rouges"
End If
Next
Next
.Value = x
End With
End With
End Sub
'--------------------------------------




"Emile63" a écrit dans le message de groupe de discussion :

On 6 mai, 20:42, Emile63 wrote:

Bonjour Michdenis, et aux autres ;-)

Merci pour ton aide, avec tes dernières propositions tu m'as mis sur
bonne voie. :-)
Il me rester toutefois une p'tite problèmatique... Comme tu l'as
remarqué il y avait des orthographes différentes.
Ce qui est souvent le cas dans enregistrements de la base de donnée
sur laquelle je travaille (pas très propre)...
Y'aurait t'y pas une astuce pour que la recherche se fasse avec une
partie du mot seulement.
Je pense a: [*bleu*] ou [*rouge?]

Merci encore pour ton aide.

Cordialement,
Emile
1 2