MFC mais en VBA ...

Guigui

XLDnaute Occasionnel
Bonsoir tous le monde,

J'ai petit probleme de condition à gerer,
On m'avais proposé une solution avec des mises en forme conditionnel, mais il me faudrait quelque chose en VBA ...
Je vous joint un exemple concret.
Merci d'avance pour votre aide

A+
Merci [file name=MFCcode.zip size=10441]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/MFCcode.zip[/file]
 

Pièces jointes

  • MFCcode.zip
    10.2 KB · Affichages: 23

thri

XLDnaute Junior
Bonjour à tous,bonjour Marc
Ta MFC est inpeccable Marc, je m'aperçois que la mienne ne fonctionne qu'en saisissant le code dans la cellule, tu peux me dire pourquoi!!
Je pense que l'userform de saisie est la raison??
Je comprends que Guigui désire tout ça en VBA.
A+ :)
 

Marc_du_78

XLDnaute Accro
Bonjour thri, Robert, Guigui,
En fait, j'ai cru comprendre que Guigui désirait que ce soit Orange sauf si...
Ensuite, tout dépend de la cellule à laquelle on se réfère.
Pour t'avouer franchement, j'ai, après avoir posté la 1ere mfc, cogité près d'une heure avant d'arriver au résultat qui me semble correspondre à la demande de Guigui, mais, comme tu l'as vu, en passant la couleur orange à toutes les cellules avant d'appliquer la mfc.
Bonne journée à tous.
 

thri

XLDnaute Junior
Re
J'ai eu aussi beaucoup de mal à comprendre ce qu'il désirait + de 2 heures hier soir, j'ai aussi appliqué l'orange comme couleur de fond et ensuite la mfc avec des différences selon la saisie de l'horaire et du code, mais la mfc ne fonctionne qu'en changeant les valeurs de la cellule et non via l'userform,
tu sais pourquoi!!!A+ :)
 

Guigui

XLDnaute Occasionnel
bonjour à tous,
Marc du 78, j'ai regarder ta propositon, mais le fait de mettre par default les couleurs en orange ne va pas, car dans mon projet, sans code retard ou sans saisie, les cellules sont blanche ou bleue...

thri, ca à l'aire de fonctionner, mais si je reprend la ligne saisie et que je modifie le code retard, la couleur ne suit pas ...

Robert, pourquoi du VBA, parceque je saisie mal le fonctionnement du MFC et avec mon appli par USF je pense que ca serais plus simple ou moins caotique ...

Je cherche toujours un moyen en VBA, ca va etre du barbare mais bon...


Un grand merci à tous,
A+
Guillaume
 

Marc_du_78

XLDnaute Accro
re bonjour,
Une autre proposition. Si ca ne te convient pas, ce que je regretterai, je n'ai rien d'autre à te proposer.
Bon courage. [file name=MFCcode3.zip size=36893]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/MFCcode3.zip[/file]
 

Pièces jointes

  • MFCcode3.zip
    36 KB · Affichages: 21

thri

XLDnaute Junior
Re à tous
Bon Guigui,
la Mfc fonctionne en fonction du code retard de la colonne J dr1
Faut -il la même MFC sur la colonne L dr2 avec les codes identiques?
'thri, ca à l'aire de fonctionner, mais si je reprend la ligne saisie et que je modifie le code
retard, la couleur ne suit pas'

De plus comme tu le dis si tu fais des saisies via l'userform la MFC ne fonctionnent pas?
Elle fonctionne en saisie dans les cellules de ton tableau dans la colonne J!!
Là mon niveau est dépassé!!
Pour la colonne L Dr2 dit nous ce qu'il faut faire!!
A+
 

Guigui

XLDnaute Occasionnel
Re tous le monde...

Tout d'abort, je m'excuse de vous causé autant de retournement de cerveau ... :unsure:
Je m'explique peut etre mal, so sorry...

Oui thri, le code Dr 2 est à prendre en compte.
Meme chose que le code Dr1

Deux codes retard sont possible si 2 'incidents' entrainent un retard au depart.
Donc le 1er peux ne pas faire partit de mes codes (11, 12 .. 34, 38) mais le 2 eme oui donc meme resultat que pour Dr1

Marc du 78, ta proposition, je regrette ... mais fonctionne mal ... Si compagnie est different de AZ et code autre que mes 11,12, ... 34 ,38 ca doit etre Orange, avec ton code, c'est blanc.

Je poursuit ma recherche en VBA, je vais faire le code le plus 'dégueulasse' de tous les temps ... je pense

A+
Guillaume

Je vous joint un classeur avec tous les cas de figures, code par code [file name=CasDeFigures.zip size=4857]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/CasDeFigures.zip[/file]
 

Pièces jointes

  • CasDeFigures.zip
    4.7 KB · Affichages: 20

Guigui

XLDnaute Occasionnel
Re

J'ai une solution en VBA ..
Fallais resté logique et traduire literalement en VBA...

mais...

Ca marche pour le 1er DR dans ma ligne de VBA mais pas pour les autres ?!!
Est-ce met fonction 'Or' ??!

Je ne sais pas...

Un petit coup de main ?
Merci
A+ [file name=SolutionMais.zip size=10038]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/SolutionMais.zip[/file]
 

Pièces jointes

  • SolutionMais.zip
    9.8 KB · Affichages: 24

thri

XLDnaute Junior
Re à tous,
Je pense que le fichier fonctionne comme tu le désires, mais ya toujours un 'mais' la MFC que j'ai appliqué ne fonctionne qu'en changeant les valeurs dans les deux colonnes de tes codes dans les cellules et pas via ton userform.
Mon niveau VBA, est + que débutant mais j'ai apprécié de travailler sur cette MFC.
Si une aide change ton code pour que la MFC applique ta saisie via l'Userform se serait parfait.
Pour copier la MFC, tu saisie la première ligne et tu copie le format si toute les lignes que tu désires, les formules suivent les lignes de ton tableau. A+ [file name=mfcvol1.zip size=46003]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/mfcvol1.zip[/file]
 

Pièces jointes

  • mfcvol1.zip
    44.9 KB · Affichages: 18

Guigui

XLDnaute Occasionnel
Re tous le monde,

Bon voilà, j'ai réussi en VBA... C'est un code barbare mais bon ca marche ...

Code:
If COMPAGNIE = 'AZ' Then
    If DR1 = '31' _
    Or DR1 = '32' _
    Or DR1 = '33' _
    Or DR1 = '34' _
    Or DR1 = '38' _

    Or DR2 = '31' _
    Or DR2 = '32' _
    Or DR2 = '33' _
    Or DR2 = '34' _
    Or DR2 = '38' _
    Then
    ActiveCell.EntireRow.Interior.ColorIndex = 3
    Else
    ActiveCell.EntireRow.Interior.ColorIndex = 45
    End If
Else
    If DR1 = '11' _
    Or DR1 = '12' _
    Or DR1 = '13' _
    Or DR1 = '15' _
    Or DR1 = '31' _
    Or DR1 = '32' _
    Or DR1 = '33' _
    Or DR1 = '34' _
    Or DR1 = '38' _

    Or DR2 = '11' _
    Or DR2 = '12' _
    Or DR2 = '13' _
    Or DR2 = '15' _
    Or DR2 = '31' _
    Or DR2 = '32' _
    Or DR2 = '33' _
    Or DR2 = '34' _
    Or DR2 = '38' _
    Then
    ActiveCell.EntireRow.Interior.ColorIndex = 3
    Else
    ActiveCell.EntireRow.Interior.ColorIndex = 45
    End If

End If

On va cloturer ici je pense, à moins que quelqu'un me convertisse ce code en du VBA digne de ce nom ...

MERCI A TOUS, Thri, Robert, Marc_du_78 ...
A+
Guillaume
 

Gruick

XLDnaute Accro
Bonjour GuiGui,
J'arrive à la fumée des cierges...un dimanche en plus, donc plus près des cieux.
J'ai mis en bleu (couleur 55) tout ce qui n'avait aucun code DR1 et DR2.
La macro s'occupe de tout ça, il suffit de la lancer.

Fichier zippé sous mac.
Rajoutes .xls au nom du fichier unzippé.
Si problème, à ta dispo.
A+
Gruick [file name=Avions.zip size=39344]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Avions.zip[/file]
 

Pièces jointes

  • Avions.zip
    9.8 KB · Affichages: 22
  • Avions.zip
    9.8 KB · Affichages: 22
  • Avions.zip
    9.8 KB · Affichages: 24

Guigui

XLDnaute Occasionnel
Re, Gruick, le forum,

WAOU ... Super,

Merci Gruick, Je m'étais approché de ca mais avec un code trés sale...

Merci d'avoir fait le ménage ...

Je me suis permis de le modifier pour l'adapter à mon projet entier ..
Code:
If ActiveCell.Offset(0, 1) = 'AZ' Then
        If DR1 = 31 Or DR1 = 32 Or DR1 = 33 Or DR1 = 34 Or DR1 = 38 _
        Or DR2 = 31 Or DR2 = 32 Or DR2 = 33 Or DR2 = 34 Or DR2 = 38 Then
            couleur = 3
        Else
            couleur = 45
        End If
    Else
        If DR1 = 11 Or DR1 = 12 Or DR1 = 13 Or DR1 = 15 _
            Or DR1 = 31 Or DR1 = 32 Or DR1 = 33 Or DR1 = 34 Or DR1 = 38 _
            Or DR2 = 11 Or DR2 = 12 Or DR2 = 13 Or DR12 = 15 _
            Or DR2 = 31 Or DR2 = 32 Or DR2 = 33 Or DR2 = 34 Or DR2 = 38 Then
            couleur = 3
        Else
            couleur = 45
        End If
    End If
    With Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 12))
        .Interior.ColorIndex = couleur
        .Font.Bold = True
    End With

J'ai retirer l'affichage du msgbox et la boucle sur la colonne C, car ton code, doit se lancer aussitot aprés avoir appuyer sur 'VALIDER' et la fermeture du USF.
Donc je l'ai fait en direct

Code:
Private Sub VALIDER_Click()
ActiveCell.Font.ColorIndex = 3 'FEU ROUGE
ActiveCell.Offset(0, 3) = NBRE_PAX 'NOMBRE PAX
ActiveCell.Offset(0, 5) = ATD_H & ':' & ATD_M 'HEURE DEPART REEL
ActiveCell.Offset(0, 6) = DUREE 'DUREE TOTAL RETARD
ActiveCell.Offset(0, 7) = NOM_COORDO 'COORDO
ActiveCell.Offset(0, 8) = DR1 'DR1
ActiveCell.Offset(0, 9) = DUREE1 'DUREE DR1
If RESTE = '00:00' Then
ActiveCell.Offset(0, 10) = '' 'DR2
Else
ActiveCell.Offset(0, 10) = DR2 'DR2
End If
ActiveCell.Offset(0, 11) = RESTE 'DUREE DR2
If RESTE = '00:00' Then
ActiveCell.Offset(0, 12) = EXPLICATION1 'EXPLICATION
Else
ActiveCell.Offset(0, 12) = EXPLICATION1 & ' // ' & EXPLICATION2 'EXPLICATION
End If
'**********************************************************************************
'MISE EN COULEUR
If ActiveCell.Offset(0, 1) = 'AZ' Then
        If DR1 = 31 Or DR1 = 32 Or DR1 = 33 Or DR1 = 34 Or DR1 = 38 _
        Or DR2 = 31 Or DR2 = 32 Or DR2 = 33 Or DR2 = 34 Or DR2 = 38 Then
            couleur = 3
        Else
            couleur = 45
        End If
    Else
        If DR1 = 11 Or DR1 = 12 Or DR1 = 13 Or DR1 = 15 _
            Or DR1 = 31 Or DR1 = 32 Or DR1 = 33 Or DR1 = 34 Or DR1 = 38 _
            Or DR2 = 11 Or DR2 = 12 Or DR2 = 13 Or DR12 = 15 _
            Or DR2 = 31 Or DR2 = 32 Or DR2 = 33 Or DR2 = 34 Or DR2 = 38 Then
            couleur = 3
        Else
            couleur = 45
        End If
    End If
    With Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 12))
        .Interior.ColorIndex = couleur
        .Font.Bold = True
    End With '*************************************************************************************
Unload Me
End Sub

J'ai également supprimer le ELSEIF, car dans les cas ou dr1 et dr2 sont vide, cela signifie que c'est un vol a l'heure donc un autre USF
(cf USF : DPT_HEURE)

Un grand merci à toi, et à tous le monde pour leurs propositions...

A+
Guillaume
 

Discussions similaires

I
Réponses
1
Affichages
1 K
P
Réponses
6
Affichages
3 K
S
Réponses
0
Affichages
1 K
Sébastien
S

Statistiques des forums

Discussions
312 576
Messages
2 089 863
Membres
104 293
dernier inscrit
blondo