Valeur de Cellule sous deux conditions

Résolu/Fermé
Signaler
Messages postés
55
Date d'inscription
mardi 18 mars 2014
Statut
Membre
Dernière intervention
16 novembre 2018
-
Messages postés
55
Date d'inscription
mardi 18 mars 2014
Statut
Membre
Dernière intervention
16 novembre 2018
-
Bonjour,

J'ai deux feuilles.
1 - PACKING dans laquelle je veux écrire quelque en cellule M16 selon le mot écrit en cellule C16
2 - SPEC contenant un tableau à 3 colonnes. La première colonne sont les valeurs que peut avoir ma cellule C16 précédemment citée. Les deux autres colonnes contiennent des 1 ou rien (voir photo)


Voici mon code :

Sub Process()


Dim NomED As String, i As Long, j As Long



Worksheets("PACKING").Activate
With Worksheets("SPEC")
NomED = Worksheets("PACKING").Range("D16")
For i = 4 To 34
If Worksheets("SPEC").Range("A" & i) = NomED Then
If Worksheets("SPEC").Range("B" & i) = 1 And Worksheets("SPEC").Range("C" & i) = 1 Then
Worksheets("PACKING").Range("M16") = "Besoin CO et EUR1"
Else
If Worksheets("SPEC").Range("B" & i) = 1 And Worksheets("SPEC").Range("C" & i) = 0 Then
Worksheets("PACKING").Range("M16") = "Besoin CO"
Else
If Worksheets("SPEC").Range("B" & i) = 0 And Worksheets("SPEC").Range("C" & i) = 1 Then
Worksheets("PACKING").Range("M16") = "Besoin EUR1"
End If
End If
End If
End If
Next i
End With

End Sub





Il ne se passe :(

Merci pour votre aide !!

4 réponses

Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
Bonjour

If Worksheets("SPEC").Range("B" & i) = 1 And Worksheets("SPEC").Range("C" & i) = 0 Then
Essaie de mettre "" au lieu de 0 dans la deuxième condition
Si ça ne marche pas, envoies un bout de ton fichier ,sur cjoint.com et joins le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".

De plus
1. Worksheets("PACKING").Activate
n'est pas utile

2. l'instruction en début de code
With Worksheets("SPEC")
te permet de simplifier
If .Range("B" & i) = 1 And .Range("C" & i) = "" Then ....

Cdlmnt
0
Messages postés
55
Date d'inscription
mardi 18 mars 2014
Statut
Membre
Dernière intervention
16 novembre 2018

Bonjour !
Merci pour ton aide.
J'ai essayé la modif mais tjrs pas

Voici le fichier :)
https://www.cjoint.com/c/GJlpZhedeSF

Bien à toi
0
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
Ton code doit réagir au changement dans la cellule D16 > procedure évènementielle
Private Sub Worksheet_Change(ByVal Target As Range)

http://www.cjoint.com/c/GJlqxS7yddB

N'oublies pas d'enregistrer ton fichier avec l'extension .xlsm (Fichier/Enregistrer sous/type ...)

Cdlmnt

Lien modifié à 18h24
0
Messages postés
55
Date d'inscription
mardi 18 mars 2014
Statut
Membre
Dernière intervention
16 novembre 2018

Super !! C'est top !! Merci beaucoup !
Est on obligé de passer par la liste de sélection pour la case D16 ?
A la base cette case est remplie en copiant la valeur depuis un autre onglet.

Merci !
0
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
Est on obligé de passer par la liste de sélection pour la case D16 ?
Non, j'ai mis une liste de validation pour être sûr de l'orthographe.

Cdlmnt
0
Messages postés
55
Date d'inscription
mardi 18 mars 2014
Statut
Membre
Dernière intervention
16 novembre 2018

Mais quand je supprime la liste, ca ne fonctionne plus. Même avec la bonne orthographe
0
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
Si, ça fonctionne, mais il faut que la donnée en D16 soit écrite exactement comme celle qui est en feuille SPEC (accents, espaces, etc ...), sinon ça ne fonctionne effectivement pas.
Donc, vois comment les données sont écrites dans cet autre onglet"A la base cette case est remplie en copiant la valeur depuis un autre onglet"
http://www.cjoint.com/c/GJmpZ3gsVLB

Cdlmnt
0
Messages postés
55
Date d'inscription
mardi 18 mars 2014
Statut
Membre
Dernière intervention
16 novembre 2018

Bonjour,

Ok j'ai compris la différence.
En fait j'ai créé une case Jaune, dans laquelle on peut sélectionner le pays sur la base de données en onglet SPEC
Et la case D16 vient reprendre la valeur de la case jaune.

Du coup cela ne fonctionne plus. Pourtant le pays est du coup écrit exactement de la même manière.

Une idée ?
Je vous mets le fichier modifié
https://www.cjoint.com/c/GJnoz5WP3zF

D'avance merci
Cordialement
0
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
En fait j'ai créé une case Jaune, dans laquelle on peut sélectionner le pays sur la base de données en onglet SPEC
du coup, c'est C12 qui change de valeur et non D16, donc il te faut modifier l'adresse de celCountry dans la macro
Const celCountry As String = "C12"

Question quend même. Pourquoi faire une liste déroulante en C12 plutot que directement en D16, mais, bon, c'est toi qui voit

Cdlmnt
0
Messages postés
55
Date d'inscription
mardi 18 mars 2014
Statut
Membre
Dernière intervention
16 novembre 2018

Parce que mon fichier est bien plus conséquent et contient notamment un onglet "ADMIN" dans lequel en case C3 nous sélectionnons le pays une fois pour tout le fichier (donnée nécessaire à plusieurs onglets et en plusieurs endroits)
Donc c'est pour éviter d'avoir à sélectionner la donnée une nouvelle fois

J'ai donc modifié sur vos conseils et déplacer la macro dans la worksheets "ADMIN"

Tout est good

un immense merci pour votre précieuse aide !
0