Lecture de mots

Bonjour

je me trouve devant un petit probleme que je n'arrive pas à résoudre , c'est pas grand chose , mais c'est embetant

mon petit code est le suivant :

Dim x As Long
Dim Vide As Boolean
Dim dlg As Integer
Dim arret As Boolean
Dim i, j As Integer

With Sheets("Mouvements de comptabilité")
    For i = 9 To dlg
      For j = 2 To 13
        If Cells(i, 12) = "ACTIF" And Cells(i, 13) = "PASSIF" Or Cells(i, 12) = "PASSIF" And Cells(i, 13) = "ACTIF" Then

          MsgBox "les libellés  sont mal renseignés à la ligne :" & i - 8 & ". Impossible d'inscrire ce mouvement  sur la meme feuille "
          arret = True
        End If
        Exit For

      Next

    Next

 End With

il marche cependant lorsque j'ecris le mot PASSIF ou ACTIF en minuscule ou l'un en majuscule et l'autre en minuscule , le code ne le detecte pas !! bien que j'ai placé en en -tête

du code "

 Option compare text 

"

Auriez vous une idée de la facon dont il faudrait faire pour que quelque soit la facon dont sont ecrit les mots " ACTIF " ou "PASSIF"

que le code puisse les lires

Merci pour vos suggetions

Cordialement

Bonjour,

Une solution simple consiste à tester la valeur en majuscules :

If UCase(Cells(i, 12)) = "ACTIF" And ...

Cordialement,

Merci pour votre réponse , j'ai essayé d'appliquer cela , mais lorsque les mots "actif " et "passif" sont tout les deux donnés en minuscules ca ne marche pas ( le code ne les reconnait pas !)

Effectivement, ça ne semble pas très adapté à ton problème, d'ailleurs je n'ai pas l'impression que ton problème soit directement lié aux majuscules/minuscules ... Avec un fichier joint, ce sera plus simple

Bonjour

Juste une idée en passant

Mets des () "parenthèses" à chaque groupe de test

If (Cells(i, 12) = "ACTIF" And Cells(i, 13) = "PASSIF") Or (Cells(i, 12) = "PASSIF" And Cells(i, 13) = "ACTIF") Then

Si pas ça suis le conseil de Sébastien

Merci Banzai , mais cela n'a pas resolu le problème , si j’écris l'un des deux mots en majuscule et l'autre en minuscule , le code n'est pas

capable de le détecter , j'ai essayé la recommandation de Sébastien mais ca reste sans effet .... peut etre que c'est pas réalisable apres tout

Bonsoir

Une question : Quand tu lances cette macro es-tu sur la page "Mouvements de comptabilité" ?

Normalement il manque des points devant les références des cellules

Regardes aussi les remarques que j'ai marqué dans le code

Option Compare Text

Sub test()
Dim x As Long
Dim Vide As Boolean
Dim dlg As Integer
Dim arret As Boolean
Dim i, j As Integer

  With Sheets("Mouvements de comptabilité")
    For i = 9 To dlg      ' Manque l'initialisation de dlg
      'For j = 2 To 13    ' A quoi sert cette boucle
        If (.Cells(i, 12) = "ACTIF" And .Cells(i, 13) = "PASSIF") Or (.Cells(i, 12) = "PASSIF" And .Cells(i, 13)) = "ACTIF" Then
          MsgBox "les libellés  sont mal renseignés à la ligne :" & i - 8 & ". Impossible d'inscrire ce mouvement  sur la meme feuille "
          arret = True
        End If
        Exit For
      'Next
    Next
 End With
End Sub

Je te remercie infiniment pour ce complement de réponse , je vais tester cela et tinformer

j'ai pu trouver l'instruction suivante qui colle parfaitement avec ce que je souhaite faire

If InStr(1, Cells(i, 12), "actif", vbTextCompare) = 1 And InStr(1, Cells(i, 13), "passif", vbTextCompare) = 1 Then 

etc.....

si on fixe la valeur 1 à actif et qu'on a dans cells(i,12) le mot actif alors on a 1 , pareil pour cells(i,13) et si on obtient deux fois 1

on peux placer l'instruction voulue par la suite , ca à l'air pas mal et ca marche

Rechercher des sujets similaires à "lecture mots"