Valeur de Cellule sous deux conditions

Résolu/Fermé
Tuline Messages postés 55 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 16 novembre 2018 - 11 oct. 2017 à 16:14
Tuline Messages postés 55 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 16 novembre 2018 - 13 oct. 2017 à 16:49
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

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
11 oct. 2017 à 17:38
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
Tuline Messages postés 55 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 16 novembre 2018
11 oct. 2017 à 17:52
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
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié le 11 oct. 2017 à 18:24
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
Tuline Messages postés 55 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 16 novembre 2018
12 oct. 2017 à 09:28
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
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
12 oct. 2017 à 13:49
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
Tuline Messages postés 55 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 16 novembre 2018
12 oct. 2017 à 15:28
Mais quand je supprime la liste, ca ne fonctionne plus. Même avec la bonne orthographe
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
12 oct. 2017 à 17:54
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
Tuline Messages postés 55 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 16 novembre 2018
13 oct. 2017 à 16:27
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
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
13 oct. 2017 à 16:34
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
Tuline Messages postés 55 Date d'inscription mardi 18 mars 2014 Statut Membre Dernière intervention 16 novembre 2018
13 oct. 2017 à 16:49
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