Application de la condition if then

Bonjour à tous,

Bien qu'ayant parcouru le cours VBA du site, je manque de pratique et n'arrive pas à résoudre un problème.

Je souhaite créer une macro qui traduise ce qui suit :

IF cellule de la conlonne G contient un Astérix* ,

Then faire apparaitre un message1 en M5,

Else faire apparaitre un message2 en N5

Le message 1 et 2 sont des invitations à saisir une donnée par l'utilisateur.

En vous remerciant par avance,

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

Bye !

7essai-v1.xlsm (20.22 Ko)

Merci mais ce n'est pas exactement ça.

je dois apporter quelques précisons:

Les cellules de la colonne G contiennent des nombres avec un *.

Le mieux serait peut être que lorsqu'il y est un * la cellule correspondante en N apparaissent en rouge sinon en vert dans la colonne M.

Comme sur cet exemple.

Merci encore,

7essai-v1.xlsm (16.08 Ko)

Et à quoi correspond la couleur de la cellule N5 ?

Bye !

La couleur de la colonne N indique que le code de la colonne G contient un *.

Exemple :

- G6=10 01 22* donc N6 devient rouge (car il y a bien un *)

Autre exemple:

- G10=17 01 02 donc M10 devient vert ( car il n'y a pas *)

J'ai pas le document sous la main pour être plus explicite, désolé.

3essai-v1.xlsm (16.06 Ko)

J'avais bien compris ça mais je demandais le pourquoi de la couleur jaune de la cellule N5 ...

Bye !

C'est une erreur, je n'aurais pas dû la laisser, ça vient de ta macro

C'est modifié normalement.

Merci,

5essai-v1.xlsm (16.06 Ko)

Nouvel essai à tester.

Bye !

7essai-v2.xlsm (21.54 Ko)

Merci beaucoup gmb,

J'ai fais plusieurs tentatives mais j'étais loin du compte...

J'ai pas tout compris à la macro mais je vais tenter de la décortiquer.

Tu sais si il est possible que la couleur apparaisse automatiquement dès la saisie du code sans passer par un bouton?

Bonjour

Dino06 a écrit :

Tu sais si ...

Je sais :

7essai-v3.xlsm (22.53 Ko)

Bye !

Un grand merci

Peux tu m'expliquer ces lignes?

If Target.Count > 1 Then Exit Sub

Set plage = Range("G3:G" & Application.Max(Target.Row, Range("G" & Rows.Count).End(xlUp).Row))

If Not Intersect(Target, plage) Is Nothing Then

plage.Offset(0, 6).Resize(, 2).Interior.Color = xlNone

Dino06 a écrit :

Peux tu m'expliquer ces lignes?

If Target.Count > 1 Then Exit Sub

La macro ne se déclenchera que si une seule cellule est sélectionnée.

Set plage = Range("G3:G" & Application.Max(Target.Row, Range("G" & Rows.Count).End(xlUp).Row))

On définit une plage qui comprend les cellules comprises entre la cellule G3 et la première cellule non vide, en remontant depuis le bas du tableau, dans cette même colonne. Et si la cellule sélectionnée (target) est plus bas que cette cellule (cas où on efface la dernière cellule de la colonne) on prend comme plage l’ensemble des cellules entre G3 et la cellule sélectionnée.

If Not Intersect(Target, plage) Is Nothing Then

Cette instruction se traduit par : « Si la cellule sélectionnée (target) est dans ‘’plage’’ » alors … »

plage.Offset(0, 6).Resize(, 2).Interior.Color = xlNone

La plage de cellules décalée d’aucune ligne et de 6 colonnes par rapport à la plage de cellules ‘’plage ‘’ puis redimensionnée avec le même nombre de lignes et 2colonnes, est affectée d’un remplissage sans couleur. C’est pour réinitialiser la zone de résultats où il pourrait déjà y avoir des couleurs.

OK ?

Bye !

Salut Gmb,

J'ai essayé de transférer la macro dans mon fichier mais ça ne fonctionne pas.

Le code déchet apparait automatiquement à la sélection du type de déchets. Je ne sais pas si ça fait une différence pour la macro.

Peux tu y jeter un coup d'oeil?

Merci

Le nouveau fichier que tu joins est très différent du fichier précédent.

Si tu expliquais ce que tu as, ce que tu voudrais obtenir et comment tu veux l'obtenir ?

Bye !

Je pensais pouvoir utiliser la même macro.

Lorsque je sélectionne le type de déchet, le code déchet apparait automatiquement.

Suite à ça, je souhaiterai que la cellule de la colonne L correspondante s'affiche en vert si le code déchet ne contient pas * . Si le code déchet contient un *, la cellule de la colonne M correspondante s'affiche en vert.

Merci,

Un essai à tester.

Bye !

Excellent.

Une dernière question.

Le fichier constitue une trame qui doit être réutilisé chaque année. A chaque année, on crée un nouveau fichier à partir de cette trame.

Sur le 3e onglet du fichier, il y a un "bilan" avec une formule dans les colonnes des mois qui contient une période du 01/01/015 au 31/12/2015.

Je souhaiterai que cette période se mette automatiquement à jour pour l'année en cours.

Par exemple, cette année pour le bois, la formule doit être:

=SOMME.SI.ENS('Registre déchets'!$H:$H;'Registre déchets'!$E:$E;">=1/1/2016";'Registre déchets'!$E:$E;"<=31/1/16";'Registre déchets'!$G:$G;"20 01 38")

et non:

=SOMME.SI.ENS('Registre déchets'!$H:$H;'Registre déchets'!$E:$E;">=1/1/2015";'Registre déchets'!$E:$E;"<=31/1/15";'Registre déchets'!$G:$G;"20 01 38")

"

Est-ce possible?

MERCI

Bonjour,

oui c'est possible remplace

1/1/2015 par

DATE(ANNEE(AUJOURDHUI());1;1)

pour avoir le 1/1/année en cours

et 31/1/15 par

DATE(ANNEE(AUJOURDHUI());1;31)

pour avoir 31/1/année en cours

année en cours se met a jour automatique tout les ans

Merci mais j'ai bien fais les remplacements à chaque cellule mais le tableau ne récupère plus les données comme il le devrait...

Gmb pas d'idée?

Rechercher des sujets similaires à "application condition then"