Valeur en fonction de la première valeur rencontrée dans l'un des cellules de gauche

Fluffy

XLDnaute Nouveau
Tout d'abord, bonjour à tous !

Après avoir longuement lu sur ce forum (merci à tous), voici mon premier post et donc ma 1ère question:

Je souhaite créer une sorte de planning avec deux types de couleur selon que la journée est réservée (Rouge) ou Libre (Bleu). Jusque là aucun problème. Chaque journée comporte des heures et j'indique les départs et les arrivées.

Très concrétement, ce que je souhaite faire c'est lorsque je met (grâce à une liste) "Libre" avant cette cellule les autres sont nécessairement rouge et après cette cellulle nécessairement bleu (logique !). Ca ça va également.

Le problème: si dans la même journée j'ai un départ (inscirt en cellule A2 par exemple) et ensuite une arrivée (cellule (A4, par exemple) et bien ma cellule C5 va être bleu et non rouge.

Je voudrais donc une formule qui serait la suivante:
Recherhcher dans toutes les cellules à gauche les mots départ et arrivée + Si le premier mot trouvé est "Départ" Alors la cellule sera de la couleur rouge.

Je ne suis pas certain que cela soit très claire, c'est pourquoi je vous joint le fichier.

Vous verrez que si vous mettez "Réservé" pour la première date (ce qui rempli la ligne entièrement en rouge) et qu'ensuite vous indiqué "départ à 5h" puis une "arrivée" à 17h tou sera bleu alors que ca ne devrait être bleu qu'entre départ et arrivée.

J'ai bien conscience d'être un gros boulet, mais c'est tellement long d'écrire ce qu'Excel semble capable de faire en 10 signes...

Petite précision: je ne fais pas du tout de VBA... donc si la solution pouvait venir d'Excel lui même:rolleyes:

Merci d'avance à vous autre qui parlez ce language si étrange !
 

Pièces jointes

  • Classeur1.xlsx
    22.1 KB · Affichages: 47
  • Classeur1.xlsx
    22.1 KB · Affichages: 52
  • Classeur1.xlsx
    22.1 KB · Affichages: 52

CISCO

XLDnaute Barbatruc
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Bonsoir

Une possibilité en pièce jointe. A toi de modifier cette MFC en fonction de ton besoin exact.

J'ai supprimé les autres MFC. Une fois que tu auras compris comment cela fonctionne, tu verras qu'on peut faire beaucoup plus simple que ce que tu avais fait. Reviens poser des questions si besoin est.

@ plus
 

Pièces jointes

  • fluffy.xlsx
    20.4 KB · Affichages: 50
  • fluffy.xlsx
    20.4 KB · Affichages: 51
  • fluffy.xlsx
    20.4 KB · Affichages: 52

hoerwind

XLDnaute Barbatruc
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Bonjour et bienvenue sur le forum,

Pas sur d'avoir bien compris ce que tu désires réaliser.
Vois la pièce jointe et dis-nous si les résultats de la formule en ligne 9 sont les couleurs de fond que tu souhaites en ligne 7.

Si c'est exact (et complet) cette formule devrait te permettre de finaliser ton fichier.
Si tu rencontres la moindre difficulté, n'hésites pas de nous préciser ce qui ne va pas, on essaiera de te dépanner

Édition : salut CISCO, pas rafraichi à temps !
 

Pièces jointes

  • MfcZonesLibres.xlsx
    19.9 KB · Affichages: 47
Dernière édition:

Fluffy

XLDnaute Nouveau
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Oui !!! (quelle rapidité pour répondre).

enfin je pense... c'est les couleurs c'est exactement l'inverse, mais au regard de la façon dont j'ai maladroitement présenté les choses je comprends qu'il puisse y avoir eu une confusion;

N'étant vraiement pas doué, je me dis qu'il me suffit d'inverser les couleurs (rouge/bleu) de ta formule pour obtenir ce que je veux, non ?

L'idée était en tout les cas celle là:

Je veux qu'avant toute cellule comportant le terme "Arrivée" les autres soient bleu (puisque que par définition il n'y pas eu encore d'arrivée donc c'est libre).
- A l'inverse, avant toute cellule comportant le terme "Départ" les autres cellules soient rouge (car la période est nécessairement occupée)
- Qu'après toute cellule "Départ" les autres (à droite donc) soient bleu (après un départ c'est libre)
- Qu'après toute cellule "Arrivée" les autres à droite soient rouge.

Donc au final qu'une cellule "Départ" ait des toutes les cellules à sa gauche en rouge et toutes les cellules à sa droite en 'bleu"
et qu'une cellule "Arrivée" ait toute les cellules de sa gauche en bleu et toutes celle de sa droite en rouge.

Mon problème était (est ?) que lorsque sur la même ligne (c.a.d le même jour) j'ai un départ puis quelques heurs (cellules) après une arrivée mon petit excel ne comprend plus rien.

Deux autre petites précisions:
- Une vraiement importante: la formule proposée peut-elle être copier-coller telle qu'elle dans les les lignes du dessous et fonctionner parfaitement ? Car concrétement je veux faire ça pour tout les mois de l'année restante et si je pouvais éviter d'avoir à recopier plusieur centaine de fois .........

- Une autre simplement parce que vu le niveau du forum je peux me permettre de vous ennuyer:)
Serait-il possible, en plus de toute mon explication d'avant que la cellule comportant l'évennement (Arrivée ou Départ) reste blanche pour se part. J'avais réussi (et oui on a les victoires qu'on peut...) à le faire, mais ça semble avoir disparu.

Ci joint le fichier où j'ai indiqué en ligne 10 ce que je souhaite.

(Vous verrez en D19 une mise en forme conditionnelle de ce que je voulais faire, mais ça ne fonctionne par).

Quoi qu'il en soit un IMMENSE merci de répondre aussi vite !!
 

Pièces jointes

  • Classeur pour exemple.xlsx
    20.3 KB · Affichages: 50
  • Classeur pour exemple.xlsx
    20.3 KB · Affichages: 49
  • Classeur pour exemple.xlsx
    20.3 KB · Affichages: 44

CISCO

XLDnaute Barbatruc
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Bonsoir

Je ne comprend pas bien ton histoire de "zut" et de A.

Résumons :
* Départ ou arrivée en blanc
* Entre départ et arrivée en bleu
* Entre arrivée et départ en rouge.


@ plus
 

CISCO

XLDnaute Barbatruc
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Rebonsoir

Je viens de trouver une erreur dans ma nouvelle proposition. Par conséquent, je la supprime.

@ plus

P.S : Bonsoir Hoerwind
 
Dernière édition:

Fluffy

XLDnaute Nouveau
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Bonsoir,

Oui tu as raison: il faut que je parvienne à résumer:p

L'idée générale:
La couleur d'une ligne dépend de la colonne B (ligne en rouge si B="Réservé; en bleu si B="Libre"

Toutefois alors sur une même ligne considérée comme réservée (donc en rouge), il peut soit un départ, soit une arrivée soit un départ ET une arrivée.

Donc:
- la ou les cellues "Arrivée" et "Départ" = en blanc.
- Avant une cellule "Arrivée": en bleu (alors même qu'après ça sera en rouge puisque la ligne est en position"Réservé)
- Après une cellule "Arrivée": en rouge (en principe cela devrait se faire par défaut puisque la ligne est indiquée "Réservée donc rouge, mais j'aurais un problème sur une ligne dite "Libre" et donc en bleu).
- Avant une cellule "Départ": en rouge.
- Après une cellule "Départ": en bleu.

Ca j'y arrive.

Le problème c'est losque j'ai sur la même ligne une cellule "Départ" ET une cellule "Arrivée":
Dans ce cas Excel me colle toutes les cellules avant la cellule "Arrivée" en bleu (ce que je lui ais effectivement demander :eek:), y compris celles avant la cellule "Départ" (alors même que lui ais demandé qu'elles soient en rouge :mad:).

L'idée est donc celle que j'ai décrit + la possibilité de dire à mon ami Excel de prendre en compte l'exsitence d'une deuxième cellule de texte.

La formule que j'ai cherché est donc:
Si avant la présente cellule il y'a "Départ" = bleu sauf si entre la cellule départ et cellule où j'insére la formule il y'a "Arrivé" (alors rouge).
Et inversement: Si avant la présente il y'a "Arrivée"=Rouge, sauf si entre "Arrivée et la cellule où j'insère la formule il y'a "Départ" (alors bleu).

Je suis loin d'avoir fait le meilleur "résumé", mais cela me semble tout de même plus claire:confused:

Je pensais avoir réussi avec l'exemple qui figure en D19: Une certaine couleur si avant le mot zut apparaît SAUF si le mot "Départ" apparaît également.

Mais je n'arrive à retranscrire ça pour les autres (cela doit venir de la colonne B qui elle même impose une condition supplémentaire ?)

En tout cas merci énormément de vous pencher sur ce problème, c'est vraiement très amicale à vous, surtout qu'en je vois la rapidité de réponse et "accessoirement" les formules auquels je ne comprends rien !

Je continue bien évidement de chercher de mon côté, c'est on jamais...

A+
 

Grand Chaman Excel

XLDnaute Impliqué
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Bonsoir Fluffy, le forum,

Voici une proposition par macro événementielle au lieu de passer par des mise en forme conditionnelle.
Le code est dans la feuille 1.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rg As Range, c As Range
    Dim ligne As Long
    Dim bArrivee As Boolean, bDepart As Boolean
    Const BLEU As Long = 16422450          'couleur BLEU = rgb(50,150,250)
    Const ROUGE As Long = 3289850         'couleur rouge = rgb(250,50,50)
    Dim Couleur As Long
    
    Set rg = ActiveSheet.Range("B7:V100")       'Plage contenant l'horaire


    If Intersect(Target, rg) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    
    ligne = Target.Row
    If Range("B" & ligne) = "Libre" Then
        Range("C" & ligne & ":V" & ligne).Interior.Color = BLEU
        
    ElseIf Range("B" & ligne) = "Réservé" Then
        Range("C" & ligne & ":V" & ligne).Interior.Color = ROUGE
        bArrivee = False
        bDepart = False
        
        ' Premièrement on cherche s'il y a Départ et Arrivée
        Set c = Range("C" & ligne)
        Do Until c.Column = 22
            If c.Text = "Départ" Then bDepart = True
            If c.Text = "Arrivée" Then bArrivee = True
            Set c = c.Offset(0, 1)
        Loop
        
        'On peut maintenant boucler selon les 3 cas possibles :
        Set c = Range("C" & ligne)
        Do Until c.Column = 23
        
            'CAS NO 1
            If bDepart And bArrivee Then
                Couleur = IIf(Couleur = BLEU, BLEU, ROUGE)
                c.Interior.Color = Couleur
                If c.Text = "Départ" Then
                    c.Interior.ColorIndex = xlNone
                    Couleur = BLEU
                End If
                If c.Text = "Arrivée" Then
                    c.Interior.ColorIndex = xlNone
                    Couleur = ROUGE
                End If
            End If
    
            'CAS NO 2
            If bDepart And Not bArrivee Then
                Couleur = IIf(Couleur = BLEU, BLEU, ROUGE)
                c.Interior.Color = Couleur
                If c.Text = "Départ" Then
                    c.Interior.ColorIndex = xlNone
                    Couleur = BLEU
                End If
            End If
    
            'CAS NO 3
            If Not bDepart And bArrivee Then
                Couleur = IIf(Couleur = ROUGE, ROUGE, BLEU)
                c.Interior.Color = Couleur
                If c.Text = "Arrivée" Then
                    c.Interior.Color = xlNone
                    Couleur = ROUGE
                End If
            End If
            Set c = c.Offset(0, 1)
        Loop
    End If
End Sub


A+
 

Pièces jointes

  • Classeur pour exemple.xlsm
    28.6 KB · Affichages: 46

hoerwind

XLDnaute Barbatruc
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Bonjour à vous tous,

Plutôt que de longues explications, ne serait-il pas plus simple de joindre un petit exemple avec tous les cas de figure et pour chacun de ceux-ci les couleurs que tu souhaites ?
 

Fluffy

XLDnaute Nouveau
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Bonjour,

En espèrant que cela soit (un peu) plus claire que mes explications, voici le fichier commenté.

Bien à vous (et un GRAND merci pour votre aide !).
 

Pièces jointes

  • Classeur1.xlsx
    46.3 KB · Affichages: 47
  • Classeur1.xlsx
    46.3 KB · Affichages: 53
  • Classeur1.xlsx
    46.3 KB · Affichages: 39

CISCO

XLDnaute Barbatruc
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Bonjour

Une nouvelle proposition sans tenir compte de tes derniers posts. Dis moi quand cela n'est pas bon.

La condition en colonne B est-elle indispensable ? J'y ai mis une formule qui indique automatiquement "Réservé" ou "Libre".

@ plus
 

Pièces jointes

  • fluffy.xlsx
    24.6 KB · Affichages: 40
  • fluffy.xlsx
    24.6 KB · Affichages: 38
  • fluffy.xlsx
    24.6 KB · Affichages: 46
Dernière édition:

Fluffy

XLDnaute Nouveau
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Bonjour CISCO (et tous les autres,

C'est quasiment ça !!!

Au niveau des conditions avant et après une cellule "Départ" ou "Arrivée" c'est exactement ça (j'ai regardé rapidement, mais ça semble parfait).

En revanche, oui, la condition de la colonne B est indispensable car certains jours (lignes) n'ont dit "Départ, ni "Arrivée", mais sont néanmoins "Réservé" donc en rouge.

Il faut donc, en plus de tes règles, que je parvienne à indiquer à Excel la couleur de la ligne est déterminée par rapport à la colonne B.

C'est la superposition de ces règles qui pose problème.

Merci infiniment de cherhcher avec moi.
 

CISCO

XLDnaute Barbatruc
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Bonjour

Et comme ça, est-ce que ça va mieux ?

Pour ce qui est des autres MFC que j'ai effaçées, soit tu les remets (en essayant de les simplifier :)), soit tu nous dis ce que tu veux, et on devrait pouvoir te montrer comment obtenir cela en moins de formules.

@ plus

P.S : Dis moi si cela va. On pourra après faire une ou deux simplifications.
 

Pièces jointes

  • fluffy bis.xlsx
    24.5 KB · Affichages: 50
Dernière édition:

Fluffy

XLDnaute Nouveau
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

P***** C'est ça !!!!!!!!!!!!!!!!!!! :):):):):)

CISCO tu as désormais un autel de dressée chez moi !

C'est merveilleux, je comprends absolument rien( et c'est pas faute d'avoir moi même essayer de bidouiller de nombreux.... trucs !), mais ça fonctionne.

Pourrais-je absuser en posant une autre question (je comprendrais qu'on me le reproche puisque du coup elle n'est plus en lien avec le titre mais je pense que cela doit être très rapide pour vous);

Je souhaite faire apparaître sur dans mon classeur en feuille 4 dans la colonne D et la colonne E également (à partir de la ligne 2) un calendrier....... Rassurez-vous j'ai déjà regeardé un grand nombre de post sur le sujet et j'ai trouvé des codes VBA (finalement je vais devoir m'y mettre..) dont celui-ci:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A2:A100000")) Is Nothing Then UserForm1.Show
End Sub

Toutefois, je ne parviens pas à le copier-coller (modifer la lettre de la colonne pas de pb, je crois voir comme faire mais le transposer dans un autre classeur, le mien...:confused:) et le faire deux fois :confused:

Voilà mon utlime question CISCO (ou tout autre âme charitable), si après avoir eu un autel à ta gloire tu veux que j'organise des pélerinages.....

En tout cas un immense merci pour se forum dont je ne manquerai pas de vanter les mérites, et un très merci à tout ceux qui aident.

PS: en pièce join le doc d'où j'ai extrait la ligne de code.
 

Pièces jointes

  • Calendrier.xls
    42.5 KB · Affichages: 37
  • Calendrier.xls
    42.5 KB · Affichages: 37
  • Calendrier.xls
    42.5 KB · Affichages: 46

CISCO

XLDnaute Barbatruc
Re : Valeur en fonction de la première valeur rencontrée dans l'un des cellules de ga

Bonjour

Je ne m'y connais que très peu en macro...

En faisant du copier-coller à partir du fichier que tu as mis en pièce jointe, j'ai obtenu le nouveau fichier en pièce jointe.

@ plus
 

Pièces jointes

  • fluffy ter macro.xlsm
    34.2 KB · Affichages: 34
  • fluffy ter macro.xlsm
    34.2 KB · Affichages: 38
  • fluffy ter macro.xlsm
    34.2 KB · Affichages: 41
Dernière édition:

Discussions similaires

Réponses
1
Affichages
170

Statistiques des forums

Discussions
312 216
Messages
2 086 344
Membres
103 194
dernier inscrit
rtison