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: ;-)
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,
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
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" <sanz.emile@gmail.com> a écrit dans le message de groupe de discussion :
8610c29f-3d20-4fc6-8947-b0c36ff17260@s29g2000yqd.googlegroups.com...
On 6 mai, 20:42, Emile63 <sanz.em...@gmail.com> 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?]
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?]