Problème de macro VBA

Résolu/Fermé
sebdorian1 Messages postés 5 Date d'inscription mercredi 6 novembre 2013 Statut Membre Dernière intervention 6 novembre 2013 - 6 nov. 2013 à 12:35
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 - 12 nov. 2013 à 09:16
Bonjour,

J'ai besoin de votre aide pour une macro VBA, je souhaiterai mettre une condition dans un document TODO List.

J'ai actuellement mis une mise en forme conditionnelle dans un document : lorsque j'ai mis la valeur Done dans ma cellule, la case passe Vert Clair, lorsque j'ai mis Validé, elle passe vert kaki, la tâche est considérée comme effectuée donc je n'ai plus à m'en soucier, elle ne m'intéresse plus mais je souhaite quand même la conserver.

Ma macro aurait donc cette fonction : lorsque ma case Done devient Validé j'aimerai qu'automatiquement la ligne concernée soit mise en invisible (Hide dans ma version anglais d'excel).

Est-ce que vous avez des idées de comment je pourrais faire ?

J'ai essayé :

If Rows("20:20").Select.Value = "Validé" Then
Selection.EntireRow.Hidden = True

End If
End Sub

Mais évidemment ça ne fonctionnne pas :)


Merci beaucoup d'avance!

dorian


A voir également:

11 réponses

sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
6 nov. 2013 à 12:44
Salut,

Tu dois faire le test sur la cellule qui reçoit le résultat.

Par exemple, tu as la colonne A qui contient l'état de ta TODO (en cours, validé, etc.)

Tu fais un test sur cette cellule :

If Range("A3").Value = "validé" Then

Rows("3:3").Select
Selection.EntireRow.Hidden = True

End If
1
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
6 nov. 2013 à 14:11
For test = 1 To 65536

If Sheets(1).Cells(test, 1).Value = "" Then Exit For

If Sheets(1).Cells(test, 1).Value = "validé" Then

Rows(test).Select
Selection.EntireRow.Hidden = True

End If

Next
1
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
6 nov. 2013 à 14:24
Il faut effectivement l'adapter à ton document :

Remplacer
65536 
si des données peuvent être enregistrées au delà de la 65536ème ligne (> Office 2007 uniquement, mais ça m'étonnerais que ce soit le cas)

Sheets(1) 
est le numéro de l'onglet dans lequel tu as les données (dans un nouveau document, la page 1 est "feuill1", la page 2 "feuill2", etc.). Tu peux mettre un nom d'onglet de cette manière :
Sheets("NomDeMonOnglet")

Cells(test, 1)
: remplacer le 1 par le numéro de colonne dans lequel doit se trouver la mention "validé" (A = 1, B = 2, C = 3, etc.)
1
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
12 nov. 2013 à 09:16
Alors ? Quelles nouvelles ?
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nivek Freedomsoul
6 nov. 2013 à 12:44
ActiveSheet.Rows(1).Select
Selection.EntireRow.Hidden = True

devrait faire l'affaire avec la numéro de ligen à cacher
0
sebdorian1 Messages postés 5 Date d'inscription mercredi 6 novembre 2013 Statut Membre Dernière intervention 6 novembre 2013
6 nov. 2013 à 13:14
Merci à vous!

A priori ces macros ne fonctionnent que ligne par ligne, non ?

Est-ce qu'il serait possible (même sans passer VBA, c'est pas un pbm) d'appliquer cette condition directement à toute la colonne?

merci!
0
sebdorian1 Messages postés 5 Date d'inscription mercredi 6 novembre 2013 Statut Membre Dernière intervention 6 novembre 2013
6 nov. 2013 à 14:20
Merci! Je colle ça en l'état dans ma fenêtre VBA ?

(j'y connais rien en progra..)
0
sebdorian1 Messages postés 5 Date d'inscription mercredi 6 novembre 2013 Statut Membre Dernière intervention 6 novembre 2013
6 nov. 2013 à 14:31
Du coup, ça me donne :

"
For Test = 1 To 65536

If Sheet1.Cells(Test, 4).Value = "" Then Exit For
If Sheet1.Cells(Test, 4).Value = "validé" Then

Rows(Test).Select
Selection.EntireRow.Hidden = True

End If
"
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 6/11/2013 à 14:46

For Test = 1 To 65536

If Sheets(1).Cells(Test, 4).Value = "" Then Exit For
If Sheets(1).Cells(Test, 4).Value = "validé" Then

Rows(Test).Select
Selection.EntireRow.Hidden = True

End If

Next


Attention, la macro s'arrête dès que la cellule de la colonne D est vide ! Donc il faut qu'il y ait toujours quelque chose, genre "Ouvert", "en cours", "cloturé", "validé", etc.

N'oublie pas le Next à la fin de l'instruction (avant ton "End Sub" et les Sheets entre ()

Et il y a un "s" à Sheets ^^

Si votre problème est résolu, merci de clôturer le sujet en cliquant sur "Problème résolu".
Administrateur réseaux sous Windows Serveur 2003
0
sebdorian1 Messages postés 5 Date d'inscription mercredi 6 novembre 2013 Statut Membre Dernière intervention 6 novembre 2013
6 nov. 2013 à 14:59
Bon...^^

J'ai tappé çam le debuggeur me dit rien de spécial, mais rien ne se passe :

Sub CLEAN()

For Test = 1 To 65530

If Sheets(1).Cells(Test, 4).Value = "" Then Exit For
If Sheets(1).Cells(Test, 4).Value = "Validé" Then

Rows(Test).Select
Selection.EntireRow.Hidden = True

End If

Next

End Sub



Ma sheet excel s'appelle Sheet1 et la colonne est la colonne E, any idea?

merci encore :D
0
sipherion Messages postés 1809 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
7 nov. 2013 à 09:33
Ben si la colonne est E, alors tu dois mettre Cells(Test, 5) !
A = 1, B = 2, C = 3, D = 4, E = 5
0