themagnakai
Messages postés2Date d'inscriptionlundi 16 mai 2005StatutMembreDernière intervention11 mai 2007
-
11 mai 2007 à 10:33
Sir_DEC
Messages postés143Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention12 mai 2012
-
11 mai 2007 à 11:19
Bonjour,
je suis nouveau sur le Forum, et je voudrais désactiver des lignes d'un tableau excel en fonction de la valeur d'une cellule.(Je sais pas si ca change quelque chose mais je travail juste avec l'éditeur vb6.3 d'excel). Il faut que je lance cette macro à partir d'un bouton.
Pour i=2 à valeur (de la dernière_ligne du tableau)
Si cellule("D"&i)="inactif" alors
rendre la ligne(i) inactive
sinon
rendre la ligne(i) active
Fin si
Fin pour
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 11 mai 2007 à 10:42
Qu'est-ce que tu appelles Rendre une ligne inactive ? Juste la masquer, la verrouiller ?
Si c'est la masquer, il te faudra un bout de code du style :
for i = 2 to DernièreLigne '(plein de codes existe sur le site te donnant ceci, moi même je me suis fait une fonction que je réutilise à l'infini)
if Range("D3&i).value = "Inactif" then
row(i & ":" & i).EntireRow.Hidden=true
else
row(i & ":" & i).EntireRow.Hidden=false
end if
next i
Attention tout de même avec les codes pour déterminer la dernière ligne (utilisant la propriété .End), si tu as des lignes masquées, elles ne sont pas considérées, ça saute les lignes vides masquées par ex. Ca ne te pose peut être pas de pbs, mais faut le savoir.
Sir_DEC
Messages postés143Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention12 mai 2012 11 mai 2007 à 10:50
Que veux-tu dire par "désactiver" ?
Tu veux cacher la ligne ("masquer") ?
Si c'est bien ça que tu veux faire, il suffira de changer la propriété "hidden" de ta ligne, comme suit :
For i = 2 To derniere_ligne (à calculer, derniere_ligne)
If (Range("D" & i) = ???) Then
Rows(i).EntireRow.Hidden = True
Else
Rows(i).EntireRow.Hidden = False
End If
Next
Range("D" & i) peut être remplacé par Cells(i,4)
Maintenant je ne pense pas que tu veuilles dire masquer car une cellule seule ne peut l'être...
Tu veux peut-être dire vide ?
Dans ce cas le test serait WorksheetFunction.CountBlank(Range("D" & i) = 1)
Ensuite, pour supprimer les valeurs de la ligne : Rows(i).ClearContents
Ou pour supprimer carrément la ligne : Rows(i).Delete
Sir_DEC
Messages postés143Date d'inscriptionmardi 17 avril 2007StatutMembreDernière intervention12 mai 2012 11 mai 2007 à 11:19
Tu peux simplement protéger la feuille et vérouiller ou dévérouiller les cellules (une cellule vérouillé sur une feuille protégée n'est pas modifiable).
Ensuite, il te suffit de changer la mise en forme en même temps, avec la propriété Interior.ColorIndex par exemple pour le fond.
PS : Personne pour m'aider moi ? :S (sujet juste dessous)
themagnakai
Messages postés2Date d'inscriptionlundi 16 mai 2005StatutMembreDernière intervention11 mai 2007 11 mai 2007 à 11:00
En fait, ca reviendrait au même que de rendre un bouton inactif, tu le vois mais il sert à rien, je voudrais les figées en fait.
J'ai une liste de 500 emplacements, pour chaque emplacement j'ai une cellule où on peut choisir si l'emplacement est actif ou pas. Si il est inactif alors je veux que ma ligne soit figée (et pourquoi pas change d'apparence), mais existe-t-il quelque chose de similaire à la propriété enabled des boutons pour les lignes excel.???
Je vais déjà essayer ce que vous m'avez donné, en tout cas merci beaucoup, vous avez fait vite.