Masquer des lignes sous conditions [Résolu] - Excel

Masquer des lignes sous conditions Masquer une ligne sous condition (Résolu) » Forum - Bureautique Masquer une ligne sous condition (Résolu) » Forum - Bureautique Masquer une ligne sous conditions (Résolu) » Forum - Excel Afficher / masquer des lignes avec conditions sous Excel » Forum - Excel Masquer des lignes avec condition (si possible sans macro) » Forum - Excel

Bonjour,

Je suis débutante en VBA, donc ma question va peut-être paraître stupide, mais j'aimerais masquer des lignes sous deux conditions. Mon problème est le suivant :
Je dois reprendre une macro super longue créée par quelqu'un d'autre (qui a quitté la société) et rajouter un masquage de lignes (les lignes peuvent soit être masquées soit supprimées). La macro est super longue, avec déjà plein de variables etc de prédéfinies (fichier "confidentiel", évidemment, du coup, impossible de le poster ici). En gros, elle reprend des données d'une feuille qu'elle transforme en une "ligne du temps" (une colonne = une semaine ou un mois et une ligne = un projet donné). Cette ligne du temps est créée dans 3 feuilles différentes (l'un pour les mois, les deux autres pour les semaines).
Cela pour expliquer la complexité.
Je dois supprimer/masquer les lignes dont le projet a abouti (colonne I = 100 ) et dont la date de fin (colonne G de la feuille de référence) précède la date de demande d'update (définie comme variable startmonth) :

Voilà ce que j'ai créé et qui bugge :

'----------> Hide rows

Range("I2").Select
If ActiveCell.Value = "100" And Sheets(ACTIVITY).Range("G2") < startMonth Then ActiveCell.EntireRow.Hidden = True


Mes deux questions :
1) Où est le bug/comment faire pour ne plus en avoir?
2) Comment faire pour qu'ensuite cela s'applique à toutes les lignes sachant qu'il me met que la variable i est déjà utilisée?

Merci d'avance

Forum

Masquer des lignes sous conditions Masquer une ligne sous condition (Résolu) » Forum - Bureautique Masquer une ligne sous condition (Résolu) » Forum - Bureautique Masquer une ligne sous conditions (Résolu) » Forum - Excel Afficher / masquer des lignes avec conditions sous Excel » Forum - Excel Masquer des lignes avec condition (si possible sans macro) » Forum - Excel

Web: www.shapebootstrap.net

8 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Pas sûr que ce soit bon, mais si "ACTIVITY" est le nom de l'onglet, il faut le mettre entre guillemets. Le message d'erreur au débogage devrait t'indiquer quelque chose dans ce sens. (ACTIVITY non définie)
Pour passer de ligne en ligne il faut une boucle.

Essaie :

ligne=2 While Cells(ligne,9).Value <> "" If Cells(ligne,9).Value = "100" And Sheets("ACTIVITY).Range("G" & ligne) < startMonth Then Cells(ligne,9).EntireRow.Hidden = True  ligne=ligne+1 Wend

Reply
réponses:
  • Nepenthes6224

    Merci pour ta réponse, mais quand j'essaie ta boucle, j'ai une erreur aussi :


    Sheets(sheetName).Cells(numero, 9).Select
    ligne = 2
    While Cells(ligne, 9).Value <> ""
    If Cells(ligne, 9).Value = "100" And Sheets(SHEET_ACTIVITY).Range("G" & ligne) < startMonth Then Cells(ligne, 9).EntireRow.Hidden = True
    ligne = ligne + 1

    Wend
    error 1004 : application-defined or object-defined error

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour

Difficile de répondre sans le fichier, dans un premier temps essaies ceci pour la ligne 2 de la colonne I (ton exemple)

Range("I2").Select If ActiveCell.Value = 100 And Sheets("ACTIVITY").Range("G2") < startMonth Then ActiveCell.EntireRow.Hidden = True


Cdlmnt

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Merci pour vos réponses.
Actuellement, j'ai ceci qui ne me met pas de bug (en fait, ma feuille "Activité" se nomme de 3 manières, je ne comprends pas, du coup je me suis plantée : elle s'appelle "feuil1", Activité, et SHEET_ACTIVITY. Difficile de comprendre le pourquoi du comment). En corrigeant, il ne me mets plus d'erreur :

'-----------> Hide rows

Dim numero As Integer
numero = 3
While numero <= 999
Sheets(sheetName).Cells(numero, 9).Select

If ActiveCell.Value = "100" And Sheets(SHEET_ACTIVITY).Cells(numero, 7) < startMonth Then ActiveCell.EntireRow.Hidden = True

Cells(numero, 9) = numero
numero = numero + 1

Wend

Par contre, dépendant de où je le place dans cette immense macro, soit il ne fait rien, soit il remplace ma colonne G par les chiffres de 3 à 999

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

J'ai ceci où il ne me remplace plus les données par des chiffres et où il ne me met pas de bug, mais je n'ai aucune ligne qui se cache :


For i = 1 To 999

Next

Sheets(sheetName).Cells(i, 9).Select

If ActiveCell.Value = "100" And Sheets(SHEET_ACTIVITY).Cells(i, 7) < startMonth Then ActiveCell.EntireRow.Hidden = True

Cells(i, 9) = i
i = i + 1

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Je pense que la macro ne fait rien car ma date en colonne G est jj/mm/aaaa et ma "start date" est juste un mois. Du coup, j'essaie de convertir le tout en une date, mais ça plante. Sachant que le mois et l'années sont deux variables mises dans des cellules différentes (et que l'on fait varier selon ce que l'on veut voir apparaître de la ligne du temps) ( = startMonth et startYear) :

For i = 3 To 999

Next
Dim endproject As Date

endproject = "startMonth" & "startYear"
Sheets(sheetName).Cells(i, 9).Select

If ActiveCell.Value = "100" And Sheets(SHEET_ACTIVITY).Cells(i, 7) < endproject Then ActiveCell.EntireRow.Hidden = True

Cells(i, 9) = i
i = i + 1

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bon, finalement, j'ai trouvé un truc plus simple, j'ai seulement rajouté des colonnes dans la feuille de départ, où je mets mes conditions (et ça met un x quand les conditions sont réunies), et dans la macro, je ne sélectionne que les lignes où le x est mis :-)
En effet, mon bug est du au format "date" (bien que j'aie essayé de mettre le format en date, ça se plante. Idem de toute façon dans les conditions "excel" (et non vba), j'ai dû mettre (if G2<DATE(Home_E4) sinon il ne le comprenait pas comme une date (bien que ma cellule est inscrite comme une date).

Merci à tous!

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Sans le fichier, on joue un peu aux devinettes.......
Un exemple qui te montrera comment tu peux tenter faire ça
https://www.cjoint.com/c/HDrmOO7GPwB

Cdlmnt

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed