Signaler

Valeur de Cellule sous deux conditions [Résolu]

Posez votre question Tuline 39Messages postés mardi 18 mars 2014Date d'inscription 13 octobre 2017 Dernière intervention - Dernière réponse le 13 oct. 2017 à 16:49 par Tuline
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 !!
Utile
+0
plus moins
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 http://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
Tuline 39Messages postés mardi 18 mars 2014Date d'inscription 13 octobre 2017 Dernière intervention - 11 oct. 2017 à 17:52
Bonjour !
Merci pour ton aide.
J'ai essayé la modif mais tjrs pas

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

Bien à toi
Répondre
Donnez votre avis
Utile
+0
plus moins
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
Tuline 39Messages postés mardi 18 mars 2014Date d'inscription 13 octobre 2017 Dernière intervention - 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 !
Répondre
ccm81 8104Messages postés lundi 18 octobre 2010Date d'inscription 13 octobre 2017 Dernière intervention - 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
Répondre
Tuline 39Messages postés mardi 18 mars 2014Date d'inscription 13 octobre 2017 Dernière intervention - 12 oct. 2017 à 15:28
Mais quand je supprime la liste, ca ne fonctionne plus. Même avec la bonne orthographe
Répondre
Donnez votre avis
Utile
+0
plus moins
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
Tuline 39Messages postés mardi 18 mars 2014Date d'inscription 13 octobre 2017 Dernière intervention - 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é
http://www.cjoint.com/c/GJnoz5WP3zF

D'avance merci
Cordialement
Répondre
Donnez votre avis
Utile
+0
plus moins
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
Tuline 39Messages postés mardi 18 mars 2014Date d'inscription 13 octobre 2017 Dernière intervention - 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 !
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !