IF then end If [Résolu]

Signaler
Messages postés
8
Date d'inscription
mercredi 28 novembre 2012
Statut
Membre
Dernière intervention
1 mars 2020
-
Messages postés
8
Date d'inscription
mercredi 28 novembre 2012
Statut
Membre
Dernière intervention
1 mars 2020
-
Bonjour,

En fonction du contenu de Cells(i, 1) (1 de 2 à4), je veux écrire dans Cells(i, 2 à 4) "3402" si le contenu est "MATISSE"
d'où mon code ci-dessous
En pas à pas et en traçant i , Cells(i, 1) et Cells(i, 2)
j'ai bien Cells(A2)="MATISSE", Cells(A3)="MATISSE", et Cells(A4) = autrechose
mais je ne passe pas sur l'instruction Cells(i, 2) = "3402" et donc pas de mise à jour dans B2 et B3 !!!
Je ne comprends pas pourquoi: mon classeur n'est pas protégé en écriture (je peux écrire 3402 à la main dans B2 et B3)

Sub secondaire()

Dim i As Integer

For i = 2 To 4

If Cells(i, 1) = "MATISSE" Then
Cells(i, 2) = "3402"

End If

Next i
End Sub

MERCI !!!

Configuration: Windows / Firefox 73.0

2 réponses

Messages postés
29617
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 septembre 2020
2 800
Bonjour,

A l'avenir, merci d'utiliser les BALISES DE CODE pour poster du code sur le forum (y choisir le langage Basic )
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite.. il se peut que ta cellule contienne des espaces et/ou que la valeur ne soit pas en majuscule...
Essaye ça :
Sub secondaire()
Dim cValue As String
Dim i As Integer

For i = 2 To 4
    cValue = UCase(Trim(Cells(i, 1).Value)) 'On vire les espaces superflus et on force en Majuscule
    If cValue = "MATISSE" Then
        Cells(i, 2) = "3402"
    End If

Next i
End Sub


Messages postés
8
Date d'inscription
mercredi 28 novembre 2012
Statut
Membre
Dernière intervention
1 mars 2020

La condition Avec like '*MATISSE*" au lieu de ="MATISSE" ç'a marche; il y a des espaces probablement en plus....
et avec des parenthèses autour de la condition , c'est mieux....


MERCI!!!