Afficher Ligne Masquée (1 par exécution macro)

Bonjour le forum

J'espère que vous profitez bien du soleil et des chaleurs... parfois trop chaudes

et que vos vacances arrivent à grands pas !!

J'ai un petit soucis sur une boucle que je n'arrive pas à finaliser

J'avais pensé au départ d'insérer une ligne à la dernière ligne détectée par une code de type avec recopie des formules nécessaires

mais j'aurais eu un pb plus bas dans ma feuille

For ligne = 1 To 200
If Left(Sheets("mafeuille").Cells(ligne, 1), 25) = "Merci d'ajouter une ligne" Then
Rows(ligne).Select
End If

je suis donc parti sur une boucle

(mes lignes 31 à 95 sont masquées)

Je souhaite ajouter une seule ligne masquée par exécution de ma macro

il y a donc incrémentation je pense mais quand je détermine :

For i = 1 to 1 

malgré le fait d'avoir demandé

i = i + 1

l'incrémentation à l’exécution suivante ne se fait pas

et quand je fait une boucle

For i = 1 to 65 

toutes mes lignes s'affichent en 1 seul clic...

Voici mon code,

Sub Test()
Application.ScreenUpdating = False
ActiveSheet.Unprotect ""

i = i + 1

For i = 1 To 1
ligne = 30 + i
Rows(ligne).Select
Selection.EntireRow.Hidden = False
Next i

Application.ScreenUpdating =True
ActiveSheet.Protect ""

Merci de votre aide !

Coucou Yoshi !

J'espère que vous profitez bien du soleil et des chaleurs... parfois trop chaudes

et que vos vacances arrivent à grands pas !!

Maaaah beaucoup trop de politesse <3 T'a raison il fais chaud c'est insupportable ><

Voici un code qui détecte qu'elle est ta dernière ligne visible et sélectionne la ligne suivante pour ensuite les afficher

Sub Test()
Dim DernLigne As Long
Dim Lignesuivante As Long
DernLigne = Range("A" & Rows.Count).End(xlUp).Row 'Si ta liste est en colonne A sinon change la Réf ;)
Lignesuivante = DernLigne + 1
Rows(DernLigne & ":" & Lignesuivante).Select
Selection.EntireRow.Hidden = False
End Sub

Hésite pas à revenir vers nous

Salut Juice !

je serais moins poli la prochaine fois promis

Et dans les faits, j'ai menti , je plaide coupable !!

je pensais etre en mesure de modifier les quelques lignes pour que ca fonctionne comme je le souhaitais, mais nooonn

il s'agit de la dernière ligne d'un tableau

et ensuite en dessous j'en ai un second

en "gros"

ligne 1:2 haut du tableau

3:30 +> 95 lignes du tableau (31:95 masquées)

96 ligne finale du tableau

et pareil plus bas

ligne 100 haut du tableau 2

100:110 +> 120 lignes du tableau 2 (111:120 masquées)

121 ligne finale du tableau2

puis une ou deux lignes de messages

et je souhaite créer une macro que je dupliquerais pr le second tableau

qui afficherait une ligne masquée, par exemple dans le Tab1, la 31 puis seconde exécution la 32...

je pense que ton code peux etre retravaillé, en remplacant ta dernligne par une ligne fixe

sauf que le count du coup serait faut puisqu'il irait jusqu'à la fin de la feuille....

des idées?

merciiiiii d'avance

Re Yoshi !

Et dans les faits, j'ai menti , je plaide coupable !!

je pensais etre en mesure de modifier les quelques lignes pour que ca fonctionne comme je le souhaitais, mais nooonn

Aaaaah si tu dit pas tout aussi ;D

Si j'ai bien compris, il y a un séparateur entre ton tableau 1 et ton tableau 2 !

On peux donc ce servir de ces lignes vides pour s'arrêter et non pas descendre jusqu'à la dernière ligne remplie.

Donc voilà le code modifier : EN FAITE SA MARCHE PAS xD

Sub Test2()
Dim Lignevide As Long
Lignevide = 1
Do While Not IsEmpty(Range("A" & Lignevide))
    Lignevide = Lignevide + 1
Loop
Range("A" & Lignevide).Select
Selection.EntireRow.Hidden = False
End Sub

Tu reviens vers moi si tu a un problème ^^

Voilà !

Je viens d'effectuer plusieurs test et normalement ce code est bon :0

Sub Test()
Dim DernLigne As Long
DernLigne = Range("A1").End(xlDown).Row
DernLigne = DernLigne + 1
Rows(DernLigne).Select
Selection.EntireRow.Hidden = False
End Sub

A toi de me dire ^^

Re salut Juicy

Ma problématique (bien que ton code fonctionne sur un fichier vierge) - merci

est que dans mon cas j'ai un tableau à compléter ... et donc l'intérêt était de faire apparaître une ligne supplémentaire dès que celui-ci serait "complet"

et j'imaginais un code qui pourrait selon si la cellule d'avant soit vide ou non ajouter une ligne jusqu’à la limite définie

ton idée était bonne mais pas applicable à ma demande

je pourrais toutefois te faire suivre un copie du fichier simplifié car je ne peux partager le fichier en question... car fichier 'entreprise'

pour le moment j'ai donc opter pour ce code

Sub TEST2()

Dim Lig As Long
Lig = 1
Do While Not IsEmpty(Range("A" & Lig))
    Lig = Lig + 1
Loop

Rows(Lig).Select
Selection.EntireRow.Hidden = False

End Sub

qui fonctionne, seulement s'il n'y a pas de cellule vide avant

ce qui pose pb pour mon deuxième tableau ou là je en peux recopier le code

je vais tacher de te faire suivre toutefois une version simplifié

merci

Voila un fichier remanié

13test.xlsm (45.89 Ko)

les lignes 21:59 sont masquées (tableau clients)

et les lignes 80:95 aussi(tableau CDC)

je souhaite comme expliqué que lorsqu'on clique sur la macro 'CDC' ou 'CLIENT'

une nouvelle ligne (masquée) s'affiche selon l'ordre numérique

du coup ici, la 21, puis la 22..

ou la 80 puis la 81..

sans forcément utiliser empty

ou du moins, ok pour le premier

mais je ne vois pas comment faire la même chose pour le second

merci encore !!

A copier coller dans la feuille excel où il y a ton tableau (clic droit sur la feuille + visualiser le code) :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DernLigne As Long
If Not Intersect(Target, Columns("C")) Is Nothing Then 'Met ici la dernière colonne de ton tableau
If Range("C30") = "" Then 'ici la dernière cellule de ton tableau avant d'arriver aux lignes masquées
Exit Sub
Else
DernLigne = Range("C1").End(xlDown).Row
DernLigne = DernLigne + 1
Rows(DernLigne).Select
Selection.EntireRow.Hidden = False
End If
End If
End Sub

Avec le fichier c'est BEAUCOUP mieux

Normalement avec le code ci-dessous sa devrait fonctionner :

Sub CLIENT ()
Dim DernLigne As Long
If Range("I20") <> "" Then 'ici on test pour voir si il n'y a pas de contenue dans la dernière cellule de ton tableau
'Si il y a du contenu alors on demande à rajouter une ligne
DernLigne = Range("I3").End(xlDown).Row 'A partir de la cellule I3 on fais un Ctrl+B
DernLigne = DernLigne + 1 'On rajoute à notre Ctrl+B un 1 pour descendre une ligne de plus
Rows(DernLigne).Select 'On sélectionne la ligne
Selection.EntireRow.Hidden = False 'On retire le masque
End If 
If Range("I79") <> "" Then 'On recommence sur le 2nd tableau
DernLigne = Range("I65").End(xlDown).Row
DernLigne = DernLigne + 1 
Rows(DernLigne).Select 
Selection.EntireRow.Hidden = False 
End If 
End Sub

Alors j'ai pas le temps de la tester mais normalement sa devrait y être ^^

Coucou Juice !

Après quelques tests, il détecte bien que la dernière cellule est non vide

mais aucun ajout, il sélectionne la dernière ligne du fichier non masquée la 98

en tout cas merci pour tes recherches

j'ai aussi mis à jour ma formule pour ma liste déroulante 'CDC' (en dynamique) afin d'éviter d'avoir des sélections vides

=DECALER('mafeuille'!$A$65;0;0;NBVAL('mafeuille'!$A:$A)-(8+'mafeuille'!$P$61))

les '-8+variable' correspondent au fait que j'ai 8 lignes immuables avant 'AUTRES' mais vu que le tableau du dessus se complète cela change se nombre total, d'où l'ajout de ma variable correspondant à chaque ligne complétée (en utilisant le compteur prod°)

a+

Bonjour Tout Le Monde

Bon finalement j'ai opté pour ce code ci après

qui selon une variable saisie dans une cellule permet d'afficher le nbr souhaité

(dans la limite définie)

tableau #2

je ne suis pas passé par une private sub avec change car à chaque frappes et "entrée" pour changer de cellule, la macro s’exécute et nous fait perdre le fil pour la complétude de chaque ligne... un peu relou

Sub MAJNbrCDC()

Application.ScreenUpdating = False
ActiveSheet.Unprotect "mdp"

ligne = 100 + Sheets("mafeuille").Range("B121").Value

If Sheets("mafeuille").Range("B121") = "" Or Sheets("mafeuille").Range("B121") = 0 Then
Rows("101:120").Select
Selection.EntireRow.Hidden = True
Else
    If Sheets("mafeuille").Range("B121") >=19 Then 'mon maximum défini, ici 19 + 1 ligne d'info comme quoi le maxi est atteint
    'possibilité de faire un msgbox
    Rows("101:120").Select
    Selection.EntireRow.Hidden = False
    Rows("123:1048576").Select
    Selection.EntireRow.Hidden = True
    Else
    Rows("101:120").Select
    Selection.EntireRow.Hidden = True
    Rows("101:" & ligne).Select
    Selection.EntireRow.Hidden = False
    Rows("123:1048576").Select
    Selection.EntireRow.Hidden = True
    End If
End If

ActiveSheet.Protect "mdp"
Application.ScreenUpdating = True

End Sub

Voila

Merci à Juice pour nos échanges

++++

Rechercher des sujets similaires à "afficher ligne masquee execution macro"