Conditions si avec deux valeurs avec IF

Bonjour Le forum

j'ai une question peux t-on donner deux conditions en utilisant notre fonction SI

Ex :

If Range("c") = " 685556"' then

ElseIf range ("c") like "*35*" then 

Rows(i + 1).insert 
(do Something)
(do Something)
(do Something)
(do Something)

else
(do Nothing) 

End if

Bonjour,

Je ne suis pas sûr de comprendre la question, est-ce que c'est ça que vous cherchez à faire?

If Range("c") = " 685556" And range ("c") like "*35*"  Then

Non ça ne semble pas logique, qu'entendez vous par "donner deux conditions en utilisant notre fonction SI"?

Plutôt ça?

If Range("c") = " 685556" Or range ("c") like "*35*"  Then

bonjour tout d'abord merci

je pense que votre solution est la bonne car en fait je voudrai que si la range C comporte "685556" et une valeurs contenant "*35*" alors que ca ajoute une nouvelle ligne

Donc il faut que la cellule contienne "685556" et qu'elle contienne "35"? La façon dont c'est écrit actuellement c'est:

doit être égal exactement à "685556" et doit contenir "35", ce qui n'arrivera jamais comme "685556" ne contient pas "35"

Si la cellule doit contenir les deux, il faut alors écrire:

If Range("c") Like "*685556*" And Range ("c") Like "*35*"  Then

Ce qui veut dire: Si la cellule contient "685556" et la cellule contient "35" alors

non en fait c'est deux cellules distincte sur la range "C" c'est

Si elle comporte "685556" et si dans la range C la cellules comportant "35168CASTIGLI" (pour ca que j'ai mis "*35*" car le début de cette cellules est forcement 35)

est présente alors ajouter une ligne

voici un screen des cellules de la range C

image

Donc quelque chose comme ça?

If Range("C2") = "685556" and Range("C3") Like "*35*" Then

La Range C c'est pas très clair pour moi, tu parles de la colonne C? il faut que les deux se succèdent comme dans le code que j'ai mis au dessus? Globalement ça va être une utilisation du And je pense.

oui c'est la colonne C autant pour moi et oui je pense

Ok donc c'est bien dans la colonne C.
Pour ajouter ta ligne, tu parcours la colonne C à la recherche de chaque endroit où tu retrouves cette succession de valeur? Puis tu insères une ligne entre les deux?
Je pose beaucoup de question car j'ai beaucoup de mal à comprendre ce que tu cherches à faire et suivant quel cas, ce qui va impacter la façon dont la condition s'écrit par la suite.

Quand je lis ton premier code j'ai l'impression que tu veux parcourir toutes la colonne C, et quand tu trouves une cellule qui est égale à 685556 suivie d'une cellule qui contient 35, tu insères une ligne après la cellule contenant la valeur 35, c'est bien ça?

Oui ca parcours effectivement toute la colonne et ca ajoute une ligne si ca trouve les deux valeurs ou ca dédouble la ligne concernant "*35*" et change juste le libellé

non c'est moi j'ai du mal a bien expliqué ce que je veux effectuée

Dans ce cas, si j'ai bien compris cette fois, quelque chose comme ça pourrait faire l'affaire:

For i = derLig To 2 Step -1
    If Range("C" & i) = "685556" And Range("C" & i + 1) Like "*35*" Then
        'ton code
    End If
Next i

Une boucle sur les lignes de la colonne C, du bas vers le haut (pour ne pas être affecté par l'ajout de lignes), si on trouve "685556" et que la cellule pile en dessous contient 35, on peut exécuter le reste du code.

Ah d'accord donc c'est une boucle que j''aurai du faire Merci de m'avoir expliqué

Re quand j'utilise votre code il me dise la Methode Range GLobal a échouée

Bonjour,

Il me faudrait plus d'informations pour aider, le fichier par exemple.

12testmacro.xlsm (17.16 Ko)

Voici le fichier j'ai fais tableau avec ,données de base et un tableau(celui avec les lignes rouges ) qui dois etre le resultat quand la macro est initialisé

Bonjour,

Donc si j'ai bien compris, ça ça devrait fonctionner:

15testmacro-1.xlsm (20.00 Ko)

le code:

Sub test()
Dim tableau
Dim ligAv35 As Integer
Dim recherche As String

tableau = Range("A1").CurrentRegion.Value2
recherche = "445720"

For i = UBound(tableau, 1) To LBound(tableau, 1) Step -1
    If CStr(tableau(i, 3)) = recherche Then
        Range("A" & ligAv35).EntireRow.Insert
        Range("A" & ligAv35, "F" & ligAv35).Value2 = Range("A" & ligAv35 + 1, "F" & ligAv35 + 1).Value2
        Range("F" & ligAv35) = Replace(Range("F" & ligAv35 + 1), "20%", "10%")
    ElseIf tableau(i, 3) Like "35*" Then
        ligAv35 = i
    End If
Next i
End Sub

Je parcours le tableau de bas en haut, si je trouve une ligne dont dont le compte commence par 35, j'enregistre son numéro de ligne dans une variable.

Si je trouve une ligne avec ce qui est cherché, je me sers de la variable pour insérer une ligne pile avant celle où le compte commence par 35.

Ensuite je reprends les valeurs de la ligne sur la nouvelle, et je remplace 20% par 10%

Tout d'abord merci davoir pris du temps pour moi Monsieur qui plus est votre code fonctionne :) Je vous remercie enormément

Rechercher des sujets similaires à "conditions deux valeurs"