Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Débutante en macro

  • Initiateur de la discussion Initiateur de la discussion Aleph8
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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?
 
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.
 
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
 
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?
 
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

Dernière édition:
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
154
Réponses
18
Affichages
786
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…