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 :

MFC en auto non appliquée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut MFC en auto non appliquée
    Bonsoir à tous,

    Dans mon application, j'ai essayé d'avoir une MFC dans n'importe quelle feuille nouvellement crée.

    Mais voila, je n'arrive pas à réaliser ce dont je voudrais.

    Quel serait le problème d'après vous ?

    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Le plus simple et de supprimer toute tes MFC.
    Puis tu sélectionnes uniquement ton tableau et tu crées une MFC avec ce code
    avec la couleur de fond souhaité.

    Ensuite lorsque tu veux ajouter des données, au lieu de les mettre simplement à la ligne, tu ajoutes une ligne à la fin de ton tableau.

    Comme ça

    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
    Private Sub CommandButton1_Click()
        With ThisWorkbook.Sheets("BD")
            'On insert une ligne à la fin du tableau (les MFC sont ajoutées automatiquement
            .Cells(.Rows.Count, "A").End(xlUp).Offset(1).EntireRow.Insert
     
            'On place les donnée
            With .Cells(.Rows.Count, "A").End(xlUp).Offset(1)
                .Value = ND.Text
                .Offset(0, 1).Value = Transport.Text
                .Offset(0, 2).Value = Paire.Text
                '[...] je te laisse mettre les autres
            End With
     
            'On tri les données
            .Range("A6", .Cells(.Rows.Count, "A").End(xlUp).Offset(0, 6)).Sort Key1:=.Range("A6"), Order1:=xlAscending, Header:=xlGuess, _
                OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     
            Unload UserForm2
        End With
    End Sub
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonsoir Qwazerty,

    Je n'ai pas de problème dans la feuille "BD".

    Le problème se pose seulement dans le reste des feuilles qui seront crées.
    Par exemple dans la feuille "Asn".

    La création automatique des feuille se fait à partir la liste déroulante de critère en "C2:C3", ainsi une MFC est appliquée.

    Mais, en regardant la feuille "Asn" on ne trouve pas de MFC.

    Dans l'événement :


    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    ...
     
    ''''--------------------------------- MFC --------------
          Sheets(temp).[A2:G4000].Select
          With Selection 'ActiveCell
            .FormatConditions.Delete
     
          '---- MFC (1) ----
            .FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=ET(MOD(LIGNE();2)=0;$A1<>"""")"
            With .FormatConditions(1).Borders
                .LineStyle = xlContinuous
                .Weight = xlHairline
                .ColorIndex = 6
            End With
            With .FormatConditions(1).Interior
                .ColorIndex = 35
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
            End With
     
          '---- MFC (2) ----
            .FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=ET(MOD(LIGNE();2)=1;$A1<>"""")"
            With .FormatConditions(2).Borders
                .LineStyle = xlContinuous
                .Weight = xlHairline
                .ColorIndex = 6
            End With
          End With
          '----------- FIN MFC -----------------
     
    .....
     
    End Sub
    Il y'a deux MFC, une avec couleur et bordure, la deuxième avec bordure seulement.

    J'espère avoir bien exposé le problème

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 30
    Par défaut
    Bonsoir,
    regarde, un début de piste, je t'ai ajouté la MFC une couleur sur 2 pour toutes tes feuilles créées. Ensuite, il suffit d'ajouter 2 autres conditions pour tes bordures.

    J'ai pris le code sur un autre site.
    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
    '==== MFC =====
        'Recherche de la Dernière ligne de la feuille créée
        L = Sheets(temp).Range("A1").End(xlDown).Row
        Set mc = Sheets(temp).Range("A2:g" & L)
        myval = mc.Address(RowAbsolute:=False, columnabsolute:=False)
     
        With Sheets(temp).Range("A2:g" & L)
            'Supprime les MFC existantes
            .FormatConditions.Delete
     
            .FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(LIGNE(" & myval & ");2)"
            With .FormatConditions(1)
                'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
                .Interior.ColorIndex = 35 'Couleur de la MFC
            End With
        End With
        '==== FIN MFC ====
    Fichiers attachés Fichiers attachés

  5. #5
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonsoir did85,

    J'ai ajouter les bordures à la MFC, mais ça ne marche pas encore :

    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
     '==== MFC =====
        'Recherche de la Dernière ligne de la feuille créée
        L = Sheets(temp).Range("A1").End(xlDown).Row
        Set mc = Sheets(temp).Range("A2:G" & L)
        myval = mc.Address(RowAbsolute:=False, columnabsolute:=False)
     
        With Sheets(temp).Range("A2:G" & L)
            'Supprime les MFC existantes
            .FormatConditions.Delete
     
            .FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(LIGNE(" & myval & ");2)"
            With .FormatConditions(1)
                'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
                .Interior.ColorIndex = 35 'Jaune
            End With
            With .FormatConditions(1).Borders
                .LineStyle = xlContinuous
                .Weight = xlHairline
                .ColorIndex = xlAutomatic '6
            End With
     
            .FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(LIGNE(" & myval & ");2)=1"
            With .FormatConditions(2).Borders
                .LineStyle = xlContinuous
                .Weight = xlHairline
                .ColorIndex = xlAutomatic '6
            End With
     
        End With
        '==== FIN MFC ====

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Citation Envoyé par apt Voir le message
    Je n'ai pas de problème dans la feuille "BD".

    Le problème se pose seulement dans le reste des feuilles qui seront crées.
    Par exemple dans la feuille "Asn".
    Je savais bien qu'il fallait que je l'a fasse dépanner cette boule de cristal...
    J'espère avoir bien exposé le problème
    Maintenant oui... voila pourquoi il y a des règles pour poster un message, ainsi tout le monde gagne du temps.

    Bon tu dis que tu as pas de soucis avec ta MFC, moi je te dis que si, si tu reprend mon message, que pour la coloration une formule de ce type est suffisante (pas besoin de variable à l’intérieur)
    avec couleur de ton choix en format
    ca te permet de colorer une ligne sur deux, l'autre ligne reste de couleur neutre.

    Pour ce qui est des cadres, je ne comprend toujours pas ce que tu souhaites exactement, j'ai beau regarder celles faites sur ton fichier, je n'en saisi pas la logique. Explique exactement ce que tu souhaites encadrer. si besoin produit manuellement le résultat sur une feuille excel et poste une image de l'apparence a obtenir.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  7. #7
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonjour Qwazerty,

    Citation Envoyé par Qwazerty Voir le message
    Salut

    Bon tu dis que tu as pas de soucis avec ta MFC, moi je te dis que si, si tu reprend mon message, que pour la coloration une formule de ce type est suffisante (pas besoin de variable à l’intérieur)
    avec couleur de ton choix en format
    ca te permet de colorer une ligne sur deux, l'autre ligne reste de couleur neutre.
    Si je reprends seulement cette formule sans condition, toutes les lignes de la plage concernée seront coloriées.

    Ce que j'aimerais faire, c'est de ne colorier que les lignes dont lesquels la première cellule $An est renseignée.

    Si elle est vide, pas besoin d'appliquer la MFC.

    Pour ce qui est des cadres, je ne comprend toujours pas ce que tu souhaites exactement, j'ai beau regarder celles faites sur ton fichier, je n'en saisi pas la logique. Explique exactement ce que tu souhaites encadrer. si besoin produit manuellement le résultat sur une feuille excel et poste une image de l'apparence a obtenir.
    Comme je masque le quadrillage des feuilles, j'aimerais cadrer chaque ligne de donnée ajoutée

    Et que les meilleurs solutions soient les bienvenues.
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Pourquoi appliques tu la MFC sur tant de ligne?
    Applique la uniquement sur les lignes contenant des données.
    Par la suite si tu veux rajouter des lignes il suffit d'inserer une ligne à la dernière position du tableau, ainsi les MFC seront prises en compte sur les cellules rajoutées.


    Autre solution, bien plus simple, étant donnée que tu utilises Excel 2007, regarde du coté des Tableaux.
    Tu cliques n'importe où dans ton tableau de données, puis tu vas dans l'onglet Insertion du menu et tu cliques sur Tableau. Excel va sélectionner ton tableau et te colorer les lignes. Avec un tableau, si tu ajoutes des données à la ligne d'après, il se redimensionne sans que tu es quoi que ce soit à faire.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. Classe non appliquée à ma balise
    Par destroyer-duck dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 01/10/2008, 22h02
  2. Fonction non appliquée
    Par Erwan31 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/04/2008, 09h30
  3. [URL Rewriting] CSS non appliquée dans l'url réécrite
    Par guigui5931 dans le forum Apache
    Réponses: 2
    Dernier message: 06/12/2007, 15h07
  4. [Joomla!] CSS non appliquées
    Par tiger33 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 25/11/2007, 18h52
  5. [JLabel] Redimensionnement auto non désiré
    Par SamRay1024 dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 21/05/2004, 18h13

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