IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Format conditionnel vba et excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 27
    Points : 29
    Points
    29
    Par défaut Format conditionnel vba et excel
    Bonjour,

    Je craque complètement.
    Je bidouille avec excel et vba un planning.
    Sur ma feuille 1 j'ai un tableau avec les types d'absence (CA, CE, AT.....) dans ma colonne A, la case correspondante de la colonne B est en couleur (1 couleur par type d'absence).
    Dans ma feuille 2 j'ai un planning avec en ligne les noms et en colonne les dates.les dates se calculent automatiquement dans excel (sans vba) en mettant le 1er janvier de l'année encours dans la case B2. Par contre quand je change la case B2 mon gentil code devrait me coloriser les Jours fériés. Et quand je mets CA,CE,AT..... il devrait me mettre la case en couleur.

    Niet il ne se passe rien

    Merci d'avance pour votre aide


    J'ai écrit le code dans la feuille 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Range("B2").Activate Then
            ActiveSheet.UnProtect
            Joursferies Target
        Else
            Coloration Target
        End If
    End Sub
     
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Coloration Target
    End Sub
     
     
    Sub Coloration(cellule)
        On Error GoTo fin
        For Each code In applicatin.Range("code")
            If code.Value = cellule.Value Then
                cellule.Interior.ColorIndex = code.Offset(0, 1).Interior.ColorIndex
                Exit Sub
            End If
        Next
    fin:
    End Sub
     
     
    Sub Joursferies(cellule)
        Application.ScreenUpdating = False
        Range("A1:B730").Interior.ColorIndex = 0
        For i = 1 To 730
            Range("A" & i).Activate
        Next i
        For j = 1 To 730
            Range("B" & j).Activate
        Next j
        Application.ScreenUpdating = True
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub
    Pascale
    "La Vallée Dorée"
    CC du Liancourtois

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonsoir,
    Je n'ai encore lu que les premières lignes..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Remplace
    If Range("B2").Activate Then 
    'par
    If Target.adress ="$b$2" then
    essaye ca et tu dit.
    A+

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    Bonsoir,
    Je n'ai encore lu que les premières lignes..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Remplace
    If Range("B2").Activate Then 
    'par
    If Target.adress ="$b$2" then
    essaye ca et tu dit.
    A+
    Salut
    Range.address sous 2003
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Joursferies(cellule)
        Application.ScreenUpdating = False
        Range("A1:B730").Interior.ColorIndex = 0
        For i = 1 To 730
            Coloration Range("A" & i)
            Coloration Range("B" & i)
        Next
        Application.ScreenUpdating = True
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub
    Pour la première, ne comprenant pas ce que tu veux réellement faire, je ne peux que t'indiquer ce qu'elle fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Range("B2").Activate Then
        'si la cellule B2 est activée(sélectionnée si elle est seule) alors
            ActiveSheet.Unprotect
            'déverrouiller la feuille active
            Joursferies Target
            'appliquer la macro Joursferies à la plage contenant uniquement les cellules modifiées 
        Else 'sinon
            Coloration Target
            'appliquer la macro Coloration à la plage contenant uniquement les cellules modifiées 
        End If
    End Sub
    autant je peux comprendre que tu colories la cellule modifiées(Coloration), autant je ne suis pas le raisonnement concernant l'activation de la cellule B2 (Quand tu modifies une cellule, tu resélectionnes B2, plutot que de faire enter ?), ni la macro Joursferies où tu fais une remise à blanc de ton planning pour le recolorier

    Je pense (donc je suis) que le but de des macros permettrait de te conseiller un fonctionnement plus efficace.

    Par principe, une macro qui déverrouille, reverrouille : c'est toujours plus facile à dépanner.

    On error goto fin : si tu as une erreur quelconque, tu sorts de ta macro ? C'est bien de gérer les erreurs, mais ne pas en être averti ? autant que tu le saches, non ? Au moins tu saura pourquoi toutes tes cellules ne sont pas coloriées.
    A+

Discussions similaires

  1. [Excel-VBA] Format conditionnelle spécifique
    Par MickaSch dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/01/2014, 20h08
  2. [XL-2007] Format conditionnel pour graphique Excel
    Par mich2p1 dans le forum Excel
    Réponses: 2
    Dernier message: 30/04/2013, 20h26
  3. [XL-2007] Format Date VBA et Excel
    Par puledad1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/12/2011, 17h02
  4. recopie conditionnel par fonction VBA sous Excel
    Par LinusVince dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/02/2006, 18h33
  5. [VBA] Access-> Excel Format de cellule
    Par toflofr dans le forum VBA Access
    Réponses: 19
    Dernier message: 31/07/2003, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo