Comment activer/desactiver une ligne dans excel en fonction de la valeur d'une c

[Résolu]
Signaler
Messages postés
2
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
11 mai 2007
-
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012
-
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

Merci d'avance à celui qui pourra m'aider.

5 réponses

Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
7
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.

Molenn
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012

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
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012

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)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Bienvenu
Bien posé comme problème,
Juste une chose, qu'entends tu par Active ou inactive?

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
2
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
11 mai 2007

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.

PA