Masquer toutes les lignes dont la valeur est de couleur noire

Signaler
Messages postés
7
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>





Salut à tous, j’ai très envie d’apprendre à programmer en VBA (je fais de la finance donc très utile pour moi).





Je me dis que le meilleur moyen d’apprendre est sans doute de l’utiliser sur un cas concret.





Voici ce que je cherche à faire : je veux masquer toutes les lignes d’un tableau dont les valeurs sont de couleur noire et rouge en appuyant sur un bouton.





 





Si quelqu'un peut m’ecrire le code, je pourrais voir step by step ce qu’il se passe et comprendre ainsi la syntaxe.





 





Merci d’avance !





 




Ben

14 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
7
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008

Pardon ?
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

désolé, je suis au taf avec Internet Explorer 6 et le cache plante (et donc message vide)

laisse moi un moment, je recommence mon message

++
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
' Admettons que tes valeurs colorés se trouvent dans la colonne C (donc la 3eme) :

Dim i As Integer
' ici on déclare une variable i, de type Entier (nombres)

For i = 1 To Range("C1").End(xlDown).Row
' là on amorce une boucle, donc i vaudra 1, puis 2, puis 3, _
etc.. jusqu'à la derniere ligne de la colonne C

If Range("C" & i).Font.ColorIndex = 3 Then
' Si la couleur de la police de la cellule C1, puis C2, etc.. _
est rouge, alors :

Rows(i).Hidden = True
' on cache la ligne i (donc celle en cours dans la boucle)
' met False pour la réafficher

End If

Next i

@++
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Pense aussi à t'enregistrer avec l'enregistreur de macro, ça aide pas mal, même si le code n'est pas optimisé ;)
Messages postés
7
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008

Merci bcp ! j'ai essayé mais malheureusement il ne se passe rien...
Bizarre non ?
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
quest ce qui est noir et rouge ?
La couleur d'écriture ou la couleur de fond ?

dans quelle colonne se trouvent ces valeurs colorés ?
Messages postés
7
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008

La couleur de la police est noire ou rouge. Les valeurs sont dans la colonne C à partir de la ligne 7.
Messages postés
7
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008

Bizarrement la boucle redémarre après la ligne 6.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Dim i As Integer
' ici on déclare une variable i, de type Entier (nombres)

For i = 7 To Range("C7").End(xlDown).Row

If Range("C" & i).Font.ColorIndex 3 or Range("C" & i).Font.ColorIndex 0 Then
' Si la couleur de la police de la cellule C1, puis C2, etc.. _
est rouge, alors :

Rows(i).Hidden = True
' on cache la ligne i (donc celle en cours dans la boucle)
' met False pour la réafficher

End If

Next i
Messages postés
7
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008

Nickel ca marche!
Autre chose : si la cellule est vide, puis je faire la meme chose ? "si la cellule est vide, alors masquer la ligne".

Autre chose, est là je m'arrête : comment créer une macro qui réaffiche toutes les lignes ?

Merci c'est génial j'adore la programmation vba !
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
If Range("C" & i).Font.ColorIndex = 3 or Range("C" & i).Font.ColorIndex = 0 or Range("C" & i).Value = vbNullString Then


pour réafficher toutes les lignes :
Rows.Hidden = False

++
Messages postés
7
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008

C'est top merci!
En plus j'ai compris le code. Peux tu me conseiller un site ou un livre pour apprendre facilement le vba stp ?

Merci
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
No soucy ;)

un livre que j'ai acheté il y a 3 ans : VBA pour Excel 2003, de John WalkenBach, édition Eyrolles.
Je le trouve au top, j'ai énormément appris grâce à cet ouvrage, et c'est progressif, tu apprends les bases, pour finir sur du plus complexe.
Ensuite, c'est à force de manipuler que ton expérience grandira.

Ensuite, niveau sites, Codes-Sources et développez.net sont parfait.

Pis n'hésite pas à regarder mes sources et snippets (fonctions / bouts de codes), mes sources du début étant surtout ancrées sur le VBA, pis mes snippets sont principalement en VBA :

Sources :
http://www.vbfrance.com/codes_auteur/MORTALINO/647037.aspx

Snippets :
http://www.codyx.org/snip_auteur_mortalino_647037.aspx

Et un site que j'aime beaucoup pour de l'optimisation, c'est le site de notre ami Us_30 :
http://fordom.free.fr/

Allez, un dernier, pour découvrir l'environnement VBA Excel, mon Tuto :
http://www.vbfrance.com/tutoriaux/DEBUTANTS-DECOUVRIR-ENVIRONNEMENT-VISUAL-BASIC-SOUS-MICROSOFT-EXCEL_646.aspx

En cas de besoins d'aide, n'hésite pas à poster ici, nombreux sont ceux qui se débrouillent très bien en VBA et t'aideront volontier


Bonne continuation, et bon courage !

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA