VBA changer valeur celulle en fonction de plusieurs cellules

Résolu/Fermé
sims - 28 juin 2016 à 23:15
simsadek
Messages postés
5
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
29 juin 2016
- 29 juin 2016 à 16:49
Bonjour à tous !

J'ai cherché un peu partout mais je ne trouve pas comment réaliser ma macro ...

Je cherche à implémenter une macro qui change la valeur des cellules d'une colonne en fonction de la valeur des cellules de plusieurs colonnes.

Exemple pour la ligne 9 :

Ma cellule à changer est E9,

C'est le dernier évènement qui devra mettre à jour le statut de la liste déroulante en cellule E9

Si C9 est renseignée donc E9 = "encours" (on ne teste pas les autres cellules)
Si D9 < date du jour et C9 ="" et F9="" donc E9 = "non recetté"
Si F9 et C9 sont renseignés donc E9 = "OK"
Si C9 est renseigné et J9, P9, V9, AB9, ou AH9 est renseigné donc E9 = "NOK"

Le fichier doit permettre l'utilisation suivante :

- Je renseigne une date en C9, on passe le statut en E9 à en cours
- Si aucune date n'est renseignée en C9 et F9 et que la date du jour > D9, on passe le statut en E9 à non recetté (on a dépassé la date prévisionnelle de fin de recette sans commencer le scénario)
- Je renseigne une date de fin en F9 et une date de début est renseignée en C9, on passe le statut en E9 à OK (scénario commencé et finalisé, mais si on retouche aux cellules J9, P9, V9, AB9, ou AH9 on repasse à NOK "et le luxe serait d'effacer la cellule F9")
- Si j'ai une date de début renseigné en C9 (Vrai même si la date de fin est renseignée en F9) et que les cellules J9, P9, V9, AB9, ou AH9 ne sont pas vides, on passe le statut en E9 à NOK.

J'ai commencé à écrire un code par rapport à ce que j'ai trouvé sur le net mais je n'arrive pas à l'adapter pour tester plusieurs cellules :

Code :
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, [C:C]) Is Nothing And Target <> "" Then
Target(1, 3) = "ENCOURS"
End If
End Sub

Merci beaucoup de votre aide !

Cdt,

Sims

3 réponses

via55
Messages postés
13593
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
20 mai 2022
2 401
29 juin 2016 à 00:54
Bonjour Sims

Pourquoi vouloir passer par une macro alors qu'une formule en E9 du style
=SI(ET(C9="";F9="";AUJOURDHUI()>D9);"Non recetté";SI(C9<>"";SI(OU(J9<>"";P9<>"";V9<>"";AB9<>"";AH9<>"");"NOK";SI(F9<>"";"OK";"En cours"));""))
te donne la même chose ?

De plus ta macro s'applique à un changement dans la feuille mais ne traite pas le cas de la date d'aujourd'hui supérieure à la date en D car le fait se produit sans entrée ou modification de valeur dans la feuille

Si tu tiens quand même à une macro fais moi signe et on avisera (il faudra 2 macros : une déclenchée à chaque modification de cellules dans la feuille, une déclenchée à l'ouverture du classeur pour vérifier les dépassements de date; c'est beaucoup plus de boulot qu'une simple formule !! )

Cdlmnt
Via
0
simsadek
Messages postés
5
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
29 juin 2016

29 juin 2016 à 12:45
Bonjour Via,

Ma réponse ci dessous

Cdt,

Sims
0
simsadek
Messages postés
5
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
29 juin 2016

29 juin 2016 à 12:43
Bonjour Via,

Merci de ta réponse,
Je ne voulais pas uiliser les formules "si" qu'en ultime recours, car
- je souhaite garder la possibilité d'utiliser la liste déroulante sur la cellule E9
- Je souhaite que ce soit n'importe quelle modification de lignes des colonnes C; D; F; J; P; V; AB; AH qui mettent à jour les cellules de la même ligne de la colonne E (même si j'ai une date de fin en F9 mais que la date de début en C9 change, le statut repasse à encours, de même si les autres cellules changent)

Je veux tester toutes les cellules des colonnes C; D; F; J; P; V; AB; AH.
En foncion de si une des cellules des colonnes est modifiée, le statut de la cellule de la même ligne de la colonne E se mets à jour, sans ordre ni priorité.

Je mets une date en C20 => E20 = ENCOURS
Je mets une date en F20 => E20 = OK
Je remets une date en C20 => E20 repasse en ENCOURS
Ainsi de suite pour les autres cellules.
C'est la dernière cellule modifiée des colonnes indiqués qui mets à jour la cellule de la même ligne en colonne E.
0
via55
Messages postés
13593
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
20 mai 2022
2 401
Modifié par via55 le 29/06/2016 à 13:59
Bonjour simsadek

1) Je ne comprends pas pourquoi tu parles de liste déroulante en E9, il y aurait un choix possible à faire manuellement en E9 ? Lequel ? Les formules ne sont de toutes façons pas incompatibles avec une liste déroulante

2) La formule mise en E9 et étirée vers le bas effectue bien les changements que tu souhaites à toutes les lignes avec la formule, si tu modifies C20 ou F20 etc E20 sera modifié

Le mieux : telecharges un exemples de ton fichier avec des données bidons sur cjoint.com, fais créer un lien, copies le et reviens le coller ici

Cdlmnt
Via
"L'imagination est plus importante que le savoir."    A. Einstein
0
simsadek
Messages postés
5
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
29 juin 2016

29 juin 2016 à 14:16
Via,

Le lien vers le fichier : http://www.cjoint.com/c/FFDmkIlAOM1

C'est sur l'onglet détail que je veux faire ma macro,
Les libellés des colonnes qui doivent changer le statut de la colonne K ici sont en vert
Le libellé de la colonne K est en rouge

Mon besoin serait de changer donc le statut des cellules de cette colonne K quand on modifie une des cellules des colonnes en vert dans le fichier.

Une formule SI m'oblige à incrémenter une priorisation ... j'en ai pleins dans le fichier.
Moi je veux que la cellule de la colonne K se mette à jour à la modification de n'importe quelle cellule des colonnes inbdiqués.

Cdt,

Sims
0
via55
Messages postés
13593
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
20 mai 2022
2 401 > simsadek
Messages postés
5
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
29 juin 2016

29 juin 2016 à 15:29
Re

Voilà une base de macro que tu pourras compléter si nécessaire
http://www.cjoint.com/c/FFDnA2ANJ2S

Le cas de la colonne H n'est pas traité pour l'instant car je ne la vois pas dans tes conditions précédentes (sur des colonnes différentes en plus !)

Cdlmnt
Via
0
simsadek
Messages postés
5
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
29 juin 2016

29 juin 2016 à 16:02
Re !

Mea culpa, la colonne H ne fait pas partie des colonnes à tester ...
De plus, oui je ne facilite pas les choses en ne parlant pas des mêmes colonnes pour l'exemple, j'avais 3 fichiers différents et les colonnes n'étaient pas les mêmes ..

Merci pour le code ! je comprends la logique mais la valeur de la colonne K ne se mets pas à jour lorsque une cellule des colonnes demandés ne sont pas vides ...

Quand tu le fait tourner ça marche pour toi ?
0
via55
Messages postés
13593
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
20 mai 2022
2 401 > simsadek
Messages postés
5
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
29 juin 2016

29 juin 2016 à 16:28
Re,

Ben oui ça fonctionne lorsque je rentre une date de debut ou de fin ou une anomalie
0
simsadek
Messages postés
5
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
29 juin 2016
> via55
Messages postés
13593
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
20 mai 2022

29 juin 2016 à 16:49
Autant pour moi ! décidément j'ai du mal ...
Le fichier était en lecture seule du coup ça ne risquait pas de fonctionner ...

C'est parfait ! c'est ce que j'attendais :)

Milles Merci !!!!
0