Probleme Combinaison de 2 Méthodes

Dragon05

XLDnaute Nouveau
Bonjour,

J'ai telechargé et appliqué dans mon classeur la (tres pratique) macro mDF_MFCmultiples_v2.zip.

Je rencontre un probleme dans la suite de mon classeur :

En fait je souhaite appliquer 2 opérations differentes pour afficher le resultat dans une cellule :

1°) Je souhaite appliquer la macro pour 74 mises en forme conditionnelle. Ce qui fonctionne parfaitement bien.

2°) Ensuite dans la même cellule, je souhaite afficher mes choix par un menu deroulant. Qui fonctionne parfaitement bien SANS l'appliquer avec les macros.

Mon probleme est que je ne peux pas appliquer les 2 méthodes combinées :
Le menu deroulant fonctionne la 1ere fois en appliquant bien la bonne mise en forme, puis ensuite le menu déroulant disparait definitivement (exemple Feuille1 - Cellule B4), j'ai remarqué que lorsque le phenomène se produit, dans Données / Validation / Options de la cellule, le choix se remet sur Autoriser - Tout .

D'avance merci bcp pour votre aide precieuse.
[file name=Nv_Planning_20051029123236.zip size=14570]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Nv_Planning_20051029123236.zip[/file]
 

Pièces jointes

  • Nv_Planning_20051029123236.zip
    14.2 KB · Affichages: 29

myDearFriend!

XLDnaute Barbatruc
Re Dragon05,

Je viens de faire l'essai, il convient simplement d'appliquer aux modèles de format colonne B de ton onglet Aptitude la même liste de validation que dans tes cellules cibles pour ne pas perdre ce menu déroulant.

Ci-joint ton classeur modifié en conséquence, ça fonctionne bien chez moi...

Cordialement, [file name=PourDragon05_20051029132258.zip size=14379]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourDragon05_20051029132258.zip[/file]
 

Pièces jointes

  • PourDragon05_20051029132258.zip
    14 KB · Affichages: 31
D

Dragon05

Guest
Bonjour,

Effectrivement, cela fonctionne très bien mais malheuresement ne regle pas mon tout à fait mon problème; car les gens de la colonne B sont susceptibles d'être affecté à n'importe quelle aptitude (L4 à L 47 feuille1).

Je te remet un exemple plus precis pour les aptitudes.

Ex : 'PICARD' peut être aussi bien C/A que COND ou E1.

Encore 1 fois merci ++++++++++++++++++ de ton soutien
 
D

Dragon05

Guest
oups...
Voici le fichier [file name=Nv_Planning_V2.zip size=13577]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Nv_Planning_V2.zip[/file]
 

Pièces jointes

  • Nv_Planning_V2.zip
    13.3 KB · Affichages: 28

Dragon05

XLDnaute Nouveau
Pour faire encore plus simple, voici un nouveau fichier.

Tu retrouves dans la feuile Aptitude :

Colonne A :Les personnels du Centre
Dans la colonne B : La mise en forme

Colonne de D à Z : Les Aptitudes par engins qui doivent apparaitre sur la feuille 1 en fonction des engins et fonction (C/A, COND;E1...)

Encore merci. [file name=Nv_Planning_V3.zip size=13780]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Nv_Planning_V3.zip[/file]

Message édité par: Dragon05, à: 29/10/2005 14:11
 

Pièces jointes

  • Nv_Planning_V3.zip
    13.5 KB · Affichages: 30

myDearFriend!

XLDnaute Barbatruc
Re Dragon05,

Effectrivement, cela fonctionne très bien mais malheuresement ne regle pas mon tout à fait mon problème; car les gens de la colonne B sont susceptibles d'être affecté à n'importe quelle aptitude (L4 à L 47 feuille1).
Pourquoi ne pas dire ça depuis le début ?

Comme ton problème va au-delà de ce que cette macro est supposée faire, la seule solution consiste à modifier le code pour mémoriser et réaffecter la validation de donnée, comme suit :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim TabTemp As Variant
Dim
L As Long
Dim
V As Variant
Dim LstValid As String
      'Ne gère pas les sélections de plages
      If Target.Cells.Count > 1 Then Exit Sub
      'Vérifie la présence du format conditionnel 'spécial'
      If Target.FormatConditions.Count < 1 Then Exit Sub
      If Target.FormatConditions(1).Formula1 = '=mDF' Then
            With Sheets('Aptitude')
                  'Charge les préférences dans un tableau variant temporaire
                  L = .Range('A65536').End(xlUp).Row
                  TabTemp = .Range(.Cells(1, 1), .Cells(L, 1)).Value
                  'Détermine le format à utiliser suivant la valeur de la cellule
                  If Target.Value = '' Then
                        L = 1
                  Else
                        For L = 2 To UBound(TabTemp, 1)
                              'Fonctionne en minuscule/majuscule pour les chaines de caractères
                              If UCase(Target.Value) = UCase(TabTemp(L, 1)) Then Exit For
                        Next L
                  End If
                  'Gestion des erreurs (impératif, compte tenu de la désactivation des évènements)
                  On Error GoTo Fin
                  Application.EnableEvents = False
                  'Applique le format (sauf les bordures)
                  .Cells(L, 2).Copy
                  'Mémorise la formule ainsi que la validation de donnée d'origine
                  V = Target.Formula
                  LstValid = Target.Validation.Formula1
                  ''Colle' le format
                  Target.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, _
                              SkipBlanks:=False, Transpose:=False
                  'Réaffecte la formule et la validation de donnée
                  Target.Formula = V
                  Target.Validation.Add Type:=xlValidateList, Formula1:=LstValid
                  'Il semble que sur Mac et dans certaines situations (non ciblées) le format
                  'conditionnel 'spécial' d'origine ne soit pas écrasé par le nouveau, il convient
                  'donc de s'en assurer avant de réimposer ce format spécial.
                  If Target.FormatConditions.Count < 1 Then Target.FormatConditions.Add Type:=xlExpression, Formula1:='=mDF'
                  Application.CutCopyMode = False
                  Application.EnableEvents = True
            End With
      End If
      Exit Sub
Fin:
      'En cas d'erreur dans le code, il convient impérativement de rétablir la gestion des
      'évènements d'application pour la suite. Par une gestion d'erreur, on réaffecte la
      'valeur True à la propriété Application.EnableEvents et on informe l'utilisateur qu'une
      'erreur non gérée est survenue
      MsgBox 'Erreur non gérée dans la procédure Workbook.SheetChange()' & vbLf & 'Erreur : ' & _
            Err & ' ' & Err.Description, vbOKOnly, 'myDearFriend!'
      Application.EnableEvents = True
End Sub
Tu trouveras ci-joint ton fichier adapté à la situation.

Je te souhaite bonne chance pour la suite...

Cordialement, [file name=mDF_Nv_Planning_V3.zip size=14910]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/mDF_Nv_Planning_V3.zip[/file]
 

Pièces jointes

  • mDF_Nv_Planning_V3.zip
    14.6 KB · Affichages: 35

Dragon05

XLDnaute Nouveau
Bonsoir,

Genial !!!! Merci beaucoup tout fonctionne parfaitement bien :) :) .

C'est vraiment tres sympa de ta part. Grace à ta macro je vais pouvoir faire un travail tres 'Pro'.

Je ne manquerai pas de vanter les qualités de votre forum.

Encore merci bcp. ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 963
Messages
2 093 998
Membres
105 906
dernier inscrit
aifa