Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2011, 19h19   #1
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
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
Type de fichier : zip b6_v1.zip (59,8 Ko, 3 affichages)
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 22h09   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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 :
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 22h45   #3
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
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 :
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
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 23h19   #4
Futur Membre du Club
 
Inscription : décembre 2003
Messages : 27
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 27
Points : 15
Points : 15
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 :
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
Type de fichier : xls b6_v1.xls (101,5 Ko, 1 affichages)
did85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 23h50   #5
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Bonsoir did85,

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

Code :
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 ====
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 06h26   #6
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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...
Citation:
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 12h40   #7
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
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.

Citation:
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
Type de fichier : xls mfc(1).xls (30,5 Ko, 1 affichages)
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 17h48   #8
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 23h14   #9
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Bonsoir Qwazerty,

Dans le fichier joint, j'applique la MFC aux premieres lignes du tableau (A6:G10).

Couleur + Cadrillage :
Cadrillage :
Et quand je saisi une nouvelle donnée dans la ligne (A11:C11), la MFC n'est appliquée que pour la colonne A
Fichiers attachés
Type de fichier : xls mfc(2).xls (30,5 Ko, 1 affichages)
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 23h36   #10
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
Normal, relit mon message précédant, pour que ça fonctionne il faut insérer la ligne à la fin du tableau.

Mais essai plutôt l'utilisation du Tableau que propose Excel 2007 et +, je te met l'exemple en pièce jointe

++
Qwaz
Fichiers attachés
Type de fichier : zip mfc(2).zip (7,9 Ko, 2 affichages)
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 00h17   #11
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Re,

Je ne peux utiliser ce que propose Excel 2007, parce que je dois faire tourner cette application sur Excel 2003 après.

En plus, c'est pénible de saisir des milliers de lignes et à chaque fois il faut insérer une nouvelle ligne à la fin du tableau.

Donc à mon avis, il ne reste que la première solution qui est d'appliquer une MFC sur tout le tableau des données envisagé en premier lieu.

Non ?
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h51.


 
 
 
 
Partenaires

Hébergement Web