Problème de macro VBA

Résolu
sebdorian1 Messages postés 7 Statut Membre -  
sipherion Messages postés 2462 Statut Membre -
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 2462 Statut Membre 286
 
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 2462 Statut Membre 286
 
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 2462 Statut Membre 286
 
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 2462 Statut Membre 286
 
Alors ? Quelles nouvelles ?
1

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

Posez votre question
Nivek Freedomsoul
 
ActiveSheet.Rows(1).Select
Selection.EntireRow.Hidden = True

devrait faire l'affaire avec la numéro de ligen à cacher
0
sebdorian1 Messages postés 7 Statut Membre
 
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 7 Statut Membre
 
Merci! Je colle ça en l'état dans ma fenêtre VBA ?

(j'y connais rien en progra..)
0
sebdorian1 Messages postés 7 Statut Membre
 
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 2462 Statut Membre 286
 

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 7 Statut Membre
 
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 2462 Statut Membre 286
 
Ben si la colonne est E, alors tu dois mettre Cells(Test, 5) !
A = 1, B = 2, C = 3, D = 4, E = 5
0