Rechercher : dans
Par :

[VBA Excel] recherche valeur->écrire cellule

Dernière réponse le 24 avr 2008 à 20:28:01 Xiombarg2911, le 23 avr 2008 à 17:18:14 
 Signaler ce message aux modérateurs

Bonjour,

Dans un cadre professionnel, je dois permettre à des utilisateurs de filtrer un fichier excel en fonction de checkbox cochée ou non.
J'ai donc le Caption des 3 checkbox enregistré dans une variable :

Sub GetClasses()
If TypeName(Ctrl) = "CheckBox" Then
If Ctrl.Value = True Then
strTemp = strTemp & Ctrl.Caption & ";"
End If
End If
End Sub

Ensuite je recherche cette valeur dans mes lignes

nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To nbLignes
If InStr(1, CStr(Range("K" & i)), strTemp) = 1 Then
Range("M" & i) = "X"

Sauf que la, il me met un X dans la colonne M de toutes les lignes, peu importe si cette ligne contient la valeur de strTemp ou pas .....
Moi je veux qu'il cherche la valeur de strTemp dans la colonne K de toutes les lignes, et si il la trouve, il me met un X au bout de la ligne correspondante, dans la Colonne M. Ce X me servira plus tard a faire mon tri.

Ca a pas l'air compliqué dit comme ça, mais je galère !

aidez moi svp :)

Configuration: Windows XP
Firefox 2.0.0.8

1

Lupin.A, le 23 avr 2008 à 18:30:21

Bonjour,

suggestion :

Sub Essai()

    nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To nbLignes
    If (InStr(1, CStr(Range("K" & i).Value), strTemp, vbTextCompare) > 0) Then
        Range("M" & i) = "X"
    End If

End Sub
'

Lupin

Répondre à Lupin.A

2

xiombarg2911, le 23 avr 2008 à 21:08:12

Merci Lupin mais j'ai toujours le meme problème

Il me met un X dans toutes les lignes, peu importe la case cochée
c'est peut être un problème au niveau du compteur, il devrait peut être juste retenir le numéro de la ligne dans la laquelle se trouve la donnée ?

Très clairement cela dépasse largement mes compétences
Si toi ou quelqu'un d'autre peu aider :-)

merci!

Répondre à xiombarg2911

3

amigo, le 23 avr 2008 à 23:49:00

Bonsoir,

Peut-on avoir un exemple des valeurs que prennent les variables à comparer, c-à-d la variable strTemp et le contenu des cellules de la colonne K, ça aiderait à comprendre pourquoi ça ne marche pas.

A+.

Répondre à amigo

4

Lupin.A, le 24 avr 2008 à 13:07:28

Re :

essai ces autres façons de faire :

Option Explicit


Sub Essai1()

    nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To nbLignes
    If (InStr(1, Range("K" & i).Value, strTemp, vbTextCompare) > 0) Then
        Range("M" & i) = "X"
    End If

End Sub
'

Sub Essai2()

    nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To nbLignes
    If (InStr(1, Range("K" & i).Value, strTemp, vbBinaryCompare) > 0) Then
        Range("M" & i) = "X"
    End If

End Sub
'

Lupin

Répondre à Lupin.A

5

Lupin.A, le 24 avr 2008 à 15:03:51
  • +1

Re:

voici le code modifié et fonctionnel chez moi !

Sub Essai1()

    Dim nbLignes As Long, strTemp As String, i As Long

    strTemp = "b"

    nbLignes = Range("A" & Rows.Count).End(xlUp).Row
    For i = 1 To nbLignes
        If (InStr(1, Range("K" & i).Value, strTemp, vbTextCompare) > 0) Then
            Range("M" & i) = "X"
        End If
    Next i
    
End Sub
'

Lupin

Répondre à Lupin.A

6

xiombarg2911, le 24 avr 2008 à 20:21:31

Bonsoir Lupin,

Ta dernière proposition est tout à fait fonctionnelle tant que la valeur de strTemp est fixe et parfaitement exacte.

Sauf que j'enregistre dans strTemp les valeurs des checkbox cochées, en les séparant par des " ; "
Du coup, avec ta sub il cherche une valeur avec un " ; " et forcément ne trouve pas

Je pense qu'il faudrait rajouter dans Instr un paramètre qui dirait de regarder entre les " ; " mais je ne vois pas comment oO

Répondre à xiombarg2911

7

 xiombarg2911, le 24 avr 2008 à 20:28:01

Oups je viens de tester un truc et *pouf* ça marche .....

j'ai interverti 2 valeurs dans le Instr

If (InStr(1, Range("K" & i).Value, strTemp, vbTextCompare) > 0)

en

If (InStr(1, strTemp, Range("K" & i).Value, vbTextCompare) > 0)

Ca marche en faisant juste ça !

intéressant non ?

Répondre à xiombarg2911
Collection CommentÇaMarche.net