XL 2010 Débutante en macro

Aleph8

XLDnaute Nouveau
Bonjour à tous,
Je suis débutante en macro excel est je cherche sur le forum depuis la semaine dernière et je sèche...
Je cherche à créer un bouton sur une base de données excel.
J'ai créé un premier bouton qui me permet de masquer/afficher par Formation
J'essaie de créer un second bouton qui me permette de masquer/afficher les agents dont la ligne est colorée (à la main) et ça ne fonctionne pas....

Le top serait au final que les deux boutons n'en soit plus qu'un seul.
Pourriez-vous m'aider s'il vous plaît?
 

Pièces jointes

  • Base 01.xls
    49.5 KB · Affichages: 26

Aleph8

XLDnaute Nouveau
J'ai essayé de comprendre et de modifier:
Sub Manuelle()
With ActiveSheet
If .DrawingObjects(1).Text Like "Afficher*" Then
.DrawingObjects(1).Text = "Afficher Formation A et afficher lignes colorées"
.Columns("K:L").Hidden = True
.[A4].CurrentRegion.Offset(1).AutoFilter 1, vbYellow, xlFilterCellColor
Else
.DrawingObjects(1).Text = "Afficher tout"
.Columns("K:L").Hidden = False
If .FilterMode Then .ShowAllData
End If
End With
End Sub

ça fonctionne pour afficher la Formation A et les lignes jaunes. Par contre, ça ne revient pas à la normale (afficher tout) quand je clique à nouveau sur mon bouton....
Comment faire?
 

job75

XLDnaute Barbatruc
Bonjour Aleph8, le forum,

"Afficher" ne peut pas servir de test si on l'affiche dans les 2 cas :
VB:
Sub Manuelle()
With ActiveSheet
    If .DrawingObjects(1).Text Like "*tout" Then
        .DrawingObjects(1).Text = "Afficher uniquement Formation A et lignes colorées"
        .Columns("K:L").Hidden = False
        If .FilterMode Then .ShowAllData
    Else
        .DrawingObjects(1).Text = "Afficher tout"
        .Columns("K:L").Hidden = True
        .[A4].CurrentRegion.Offset(1).AutoFilter 1, vbYellow, xlFilterCellColor
    End If
End With
End Sub
Bonne journée.
 

job75

XLDnaute Barbatruc
On peut si on le souhaite utiliser la propriété AutoSize mais ce n'est pas obligatoire :
VB:
Sub Manuelle()
With ActiveSheet
    If .DrawingObjects(1).Text Like "*tout" Then
        .DrawingObjects(1).Text = "Afficher uniquement Formation A et lignes colorées"
        .Columns("K:L").Hidden = False
        If .FilterMode Then .ShowAllData
    Else
        .DrawingObjects(1).Text = "Afficher tout"
        .Columns("K:L").Hidden = True
        .[A4].CurrentRegion.Offset(1).AutoFilter 1, vbYellow, xlFilterCellColor
    End If
    .DrawingObjects(1).AutoSize = True 'facultatif, ajuste la largeur du bouton
End With
End Sub
 

Aleph8

XLDnaute Nouveau
Oui j’ai vu et j'ai compris... Merci
Encore une question.
Dans le code il y vbYellow qui correspond à ma couleur jaune.
Si je veux mettre d'autres lignes en couleur (vert par exemple pour la formation B) comment puis-je trouver le code qui correspond à la couleur choisie et comment l'intégrer dans VBA à la place de VB Yellow?
 

Aleph8

XLDnaute Nouveau
J'ai trouvé un fichier pour avoir le code RGB,
par contre, j'ai un truc étrange:
j'ai créé 3 boutons de formation mais lorsque je clique sur la formation B (par exemple) le bouton formation A passe en "afficher tout" puis au 2nd clic il s'affiche "Formation B et lignes vertes"
Est-ce que c'est une erreur de code. Est ce que je peux modifier le code pour que chaque bouton ne fasse que le trie et ne fasse plus le retour en créant un bouton retour à part??
 

Pièces jointes

  • Base 01.xls
    59 KB · Affichages: 4
Dernière édition:

job75

XLDnaute Barbatruc
On en est au 29ème post ! Il aurait été quand même plus simple de présenter ce fichier dès le début :
VB:
Sub Afficher_tout()
With ActiveSheet
    .Columns.Hidden = False
    If .FilterMode Then .ShowAllData
End With
End Sub

Sub Jaune()
With ActiveSheet
    .Columns("I:J").Hidden = False
    .Columns("K:N").Hidden = True
    .[A4].CurrentRegion.Offset(1).AutoFilter 1, RGB(255, 255, 0), xlFilterCellColor
End With
End Sub

Sub Vert()
Afficher_tout
With ActiveSheet
    .Columns("K:L").Hidden = False
    .Range("I:J,M:N").Columns.Hidden = True
    .[A4].CurrentRegion.Offset(1).AutoFilter 1, RGB(0, 255, 0), xlFilterCellColor
End With
End Sub

Sub Bleu()
Afficher_tout
With ActiveSheet
    .Columns("M:N").Hidden = False
    .Columns("I:L").Hidden = True
    .[A4].CurrentRegion.Offset(1).AutoFilter 1, RGB(0, 255, 255), xlFilterCellColor
End With
End Sub
 

Pièces jointes

  • Base 01.xls
    88.5 KB · Affichages: 3

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 247
Messages
2 086 591
Membres
103 248
dernier inscrit
Happycat