Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Formule avec les mois de l’année

P

Pias

Guest
Bonsoir le Forum
Est-ce qu’il est possible de faire la chose suivante, avec la formule si je suppose

Dans la cellule A1 j’ai les douze mois de l’année en abréviation ( Jav Fev Mar Avr… etc. )
Si la valeur de la cellule B1 est égal à Mar , Avr ou ( 3 , 4 ).
Je souhaiterais Que dans la cellule A1 Seulement les mois indiqués dans la cellule B1 Changent de couleur, rouge pour exemple.
Si quelqu’un à une idée de comment je peux faire un grand merci d’avance.

Amicalement

...On se lasse de tout sauf d’apprendre !..
 
H

Hervé

Guest
Bonsoir

Une proposition en vba, en pièce jointe

Salut
Hervé

Option Compare Text
Public Sub vev()
Dim nombre As Byte
Dim mois As Byte
Range("a1").Characters(mois, nombre).Font.ColorIndex = 1
nombre = Len(Range("b1"))

mois = InStr(1, Range("a1"), Range("b1"))
If mois = 0 Then Exit Sub
Range("a1").Characters(mois, nombre).Font.ColorIndex = 3
End Sub
 

Pièces jointes

  • Classeur2.zip
    6.9 KB · Affichages: 61
  • Classeur2.zip
    6.9 KB · Affichages: 65
  • Classeur2.zip
    6.9 KB · Affichages: 70
P

Pias

Guest
Salut, Hervé

Ca fonctionne impeccable il y rien a dire.
Merci beaucoup.

Le seul problème est que je voudrais l’applique à toutes les lignes et pas seulement a la ligne 1.
C’est pour cette raison que j’avais pensé à la Formule Si.
Sans abuser de ta serviabilité, est-ce que tu peut stop l’adapter

A +

...On se lasse de tout sauf d’apprendre !..
 
H

Hervé

Guest
re

J'ai pensé que lorsque tu dis : l’applique à toutes les lignes et pas seulement a la ligne 1, tu avait en colonne A tes mois sur plusieurs lignes, et en colonne B le mois recherché aussi sur plusieurs lignes.

Option Compare Text
Public Sub vev()
Dim nombre As Byte
Dim mois As Byte
Dim c As Range
For Each c In Range("b1:b" & Range("b65536").End(xlUp).Row)
c.Offset(0, -1).Characters(mois, nombre).Font.ColorIndex = 1
nombre = Len(c)
mois = InStr(1, c.Offset(0, -1), c)
If mois = 0 Then Resume Next
c.Offset(0, 1) = mois
c.Offset(0, -1).Characters(mois, nombre).Font.ColorIndex = 3
Next c
End Sub

Salut
Hervé
 
P

Pias

Guest
Salut, Hervé
C’est presque parfait.
Sans vouloir être trop …

Si les valeurs en B ne sont pas dans l’ordre ça ne marche pas.
Par exemple : en B2 dec jan ça ne fonctionne pas.
Et comme il y a de plantes que on une période de floraison de décembre à mars etc…
Voila mon problème.
Est-ce que tu peux corriger ça ?
En tous cas en grand merci pour ton aide

Amicalement

...On se lasse de tout sauf d’apprendre !..
 
H

Hervé

Guest
salut pias

d'abord le code et ensuite les problèmes :

Option Compare Text
Public Sub vev()
Dim nombre As Byte, nombre2 As Byte
Dim mois As Byte, mois2 As Byte
dim i as range
Range("a1").Characters(mois, nombre).Font.ColorIndex = 1
nombre = Len(Range("b1"))
nombre2 = Len(Range("c1"))
mois = InStr(1, Range("a1"), Range("b1"))
mois2 = InStr(1, Range("a1"), Range("c1"))
If mois = 0 Then Exit Sub
For i = mois To mois2 + nombre2
If i = mois2 + nombre2 Then Exit For
Range("a1").Characters(i).Font.ColorIndex = 3
'Range("a1").Characters(mois, nombre).Font.ColorIndex = 3
'Range("a1").Characters(mois2, nombre2).Font.ColorIndex = 3
Next i
End Sub

Ce code recherche dans la cellule a1 la position du mois inscrit en b1 (variable : mois), ensuite on recherche la position du mois inscrit en c1(mois2).

Puis on boucle pour colorier en a1 les caractères entre les deux mois, mon problème est que cette boucle ne sait pas s'arréter à la fin du 2ème mois et va jusqu'à la fin de la cellule A1.

J'ai bien essayé de sortir de la boucle en forcant le i , mais rien à faire ??????

Tout ceci pour te dire, pias, que je ne pense pas que ce que tu veux faire soit réalisable (en plus en 2 cellules), ou alors par quelqu'un de plus doué que moi (et y'en à plein ici).

Ne pourrait-tu pas utiliser plus de 2 cellules, une cellule par mois serait jouable.

Voila, je suis désolé de ne pas avoir trouvé de réponse, je cherche encore...

Salut
Hervé
 
P

Pias

Guest
Bonjour Hervé et le Forum

Tu est super Hervé, c’est vraiment sympa.
Merci beaucoup pour tes explications.

Le problème est que les valeurs de la cellule doivent être affiches dans un Label.
( Label40.Caption = Sheets("base").Range("P1").Value ).
Comment faire si on utilise plus que une cellule ?

C’est vraiment compliqué mon affaire !

Il va falloir les connaissances des poids lourds du VBA !

Bonne Nuit à tous



Amicalement

...On se lasse de tout sauf d’apprendre !..
 
H

Hervé

Guest
salut pias

via un label tu ne pourras pas définir les couleurs de caractères.

Regarde en pièce jointe, je suis parti à l'envers : remplir la cellule via un userform.

Tiens moi au courant, stp.

Salut
Hervé
 

Pièces jointes

  • Classeur1.zip
    13.8 KB · Affichages: 51
  • Classeur1.zip
    13.8 KB · Affichages: 52
  • Classeur1.zip
    13.8 KB · Affichages: 51
P

Pias

Guest
Salut, Hervé

Elle me plaît ta solution.
C’est exactement ça que je voulais.
Mais comment l’adapter ?
Je envoies une pièce jointe pour que tu puisse voir se que j’aimerais obtenir.
Mais je crains que cela ne soit pas possible, cause :
Il n'y a pas d'événement "Change" pour les Label.
Via un label je ne peux pas définir les couleurs de caractères.
Ne t’inquiète pas se tu ne trouves pas de solution, c’est pas grave.
Je voulais simplement adapter pour mes besoins une application que Michel a faite.
<http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=147496&t=138467>

Si tu trouves un solution c’est super, sinon un grand merci pour ta serviabilité.

Amicalement

...On se lasse de tout sauf d’apprendre !..
 

Pièces jointes

  • base_images.zip
    34.8 KB · Affichages: 46
  • base_images.zip
    34.8 KB · Affichages: 45
  • base_images.zip
    34.8 KB · Affichages: 45
P

Pias

Guest
Salut, Hervé
Excuse-moi il a un petit bug dans la première pièce jointe.
Celle si c’est la bonne.
Bonne nuit
Et Merci

Amicalement

...On se lasse de tout sauf d’apprendre !..
 

Pièces jointes

  • base_images_2.zip
    33.6 KB · Affichages: 38
H

Hervé

Guest
Salut pias

Regarde en pièce jointe, un mot d'explication est fourni.

Salut
Hervé
 

Pièces jointes

  • base_images_3.zip
    45 KB · Affichages: 36
  • base_images_3.zip
    45 KB · Affichages: 35
  • base_images_3.zip
    45 KB · Affichages: 38
P

Pias

Guest
Salut, Hervé

Comme j’ai adapté la Multi Mini BD V3.51 de Didier Clément à cette application le fait d’avoir douze cellules dans la feuil base me gêne un peut.
Mais on peut peut-être contourner le problème de la manière suivante :

Dans la colonne E de la feuil base on écrit par exemple jan mar
Il faut trouver une macro que vas colorier les cellules de Jan fev mar de la nouvelle feuil.
Bien entendue c’est cette nouvelle feuil que aliment les labes de l’userform.


Tu crois que cette solution est possible ?
Je cherche des infos dans le forum , si tu arrives avant moi tu me le fais savoir stp.
En tout cas un grand merci Hervé, vraiment.

Je regardé ton post pour histoire de caractères, tatiak à répondue avec le Font.Color.

A +

...On se lasse de tout sauf d’apprendre !..
 
H

Hervé

Guest
re

regarde en pièce jointe, une seule colonne pour la floraison.

A suivre

Salut
Hervé
 

Pièces jointes

  • base_images_3.zip
    39 KB · Affichages: 40
  • base_images_3.zip
    39 KB · Affichages: 37
  • base_images_3.zip
    39 KB · Affichages: 43
P

Pias

Guest
Salut, Hervé
Encore un tout petit truc et on est bon.
Regarde la pièce jointe.

Merci

A+

...On se lasse de tout sauf d’apprendre !..
 

Pièces jointes

  • base_images_4.zip
    40.7 KB · Affichages: 54
H

Hervé

Guest
Salut pias

Si j'ai bien compris on renvoi les données de la colonne floraison vers la feuille3, puis on se sert de cette dernière pour colorié les labels.

Pourquoi n'utilise t'on pas le système trouver dans base image 3, on évite une feuille ?

Il doit y a avoir une raison, qui m'échappe, en entendant ta réponse, je travaille sur base image 4.

Mais avant déneigement....

Salut
Hervé
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…