Problème d'ajout et de masquage de ligne (vba)

Le
Dospace
Bonjour,

Je travaille actuellement sur un projet vba et mes différentes commandes
semblent se confronter. Ce n'est pas rééllement un bug puisque mes codes
fonctionnent tous bien mais cela empêche la finalité de mon projet.
Je vous explique.

Sur excel, j'ai un tableau (fichier appelé "Projets")
Ce tableau est rempli de différents projets avec leurs détails via un
userform (UsFAjout).
A chaque ajout, la macro recherche la dernière ligne vide et ajoute la ligne
à ce niveau.
Il peut arriver qu'un projet soit terminé, dans ce cas l'userform a une
checkbox que l'on doit cocher si le projet est terminé.
Si la checkbox est coché, la ligne est ajoutée suite aux autres lignes et
masquée automatiquement dans le tableau excel.

Si j'ajoute des projets, cela les place automatiquement à la dernière ligne
non vide.
J'ajoute un projet masqué cela le place dans la dernière ligne vide et le
masque. Jusque là tout est normal.
Mais ensuite quand j'ajoute des projets, cela les met A LA PLACE du projet
masqué. La ligne reste masquée et tous les projets que j'ajoute ensuite se
mette sur cette ligne et remplace le projet inscrit précédemment.

Voici mon code (quand on clique sur le bouton valider, cela remplit mon
tableau excel à partir de la ligne 8 et de la colonne C)

Private Sub CmdValidAjout_Click()

'aller dans la première cellule vide
Dim C As Integer

Range("c8").Select
C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

'Transfert de chaque détail dans la cellule correspondate du fichier excel
'Transfert année
ActiveCell.Value = UsFAjout.TbxAnnee.Value

'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Transfert Projet
ActiveCell.Value = UsFAjout.TbxProjet.Value
()
'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Masquer si projet terminé
If UsFAjout.ChBoxTerminé = True Then
Range((Cells(C, 3)), (Cells(C, 17))).Select
Selection.Interior.ColorIndex = 15
Selection.EntireRow.Hidden = True
End If

'trier en fonction du site et de l'année
Sheets("Projets").Range("c8:q65000").Select

Selection.Sort Key1:=Range("P8"), Order1:=xlAscending, Key2:=Range("C8") _
, Order2:=xlAscending, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom

End Sub

Y a t'il une erreur dans mon code ou est ce que je dois ajouter quelque
chose pour que quand la macro recherche la dernière ligne vide elle
considère la ligne masqué comme "non vide"?

J'espère avoir été claire et j'espère que vous pourrez m'aider.
Merci par avance
Dospace
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #4479561
Salut Dospace
Ton disfonctionnement se situe dans la partie de ton code suivant :

C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

Qui réagit de manière différente selon que les dernières lignes sont
masquées ou pas
Je te propose cette modification :
(Début de ton code)
c = Sheets("Projets").Range("c65530").End(xlUp).Row
c = c + 1
Cells(c, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select
Do While ActiveCell.EntireRow.Hidden = True
ActiveCell.Offset(1, 0).Select
Loop
(Suite de ton code)
Celà semble mieux fonctionner
A tester biensure

Dis moi !!!



Bonjour,

Je travaille actuellement sur un projet vba et mes différentes commandes
semblent se confronter. Ce n'est pas rééllement un bug puisque mes codes
fonctionnent tous bien mais cela empêche la finalité de mon projet.
Je vous explique.

Sur excel, j'ai un tableau (fichier appelé "Projets")
Ce tableau est rempli de différents projets avec leurs détails via un
userform (UsFAjout).
A chaque ajout, la macro recherche la dernière ligne vide et ajoute la ligne
à ce niveau.
Il peut arriver qu'un projet soit terminé, dans ce cas l'userform a une
checkbox que l'on doit cocher si le projet est terminé.
Si la checkbox est coché, la ligne est ajoutée suite aux autres lignes et
masquée automatiquement dans le tableau excel.

Si j'ajoute des projets, cela les place automatiquement à la dernière ligne
non vide.
J'ajoute un projet masqué cela le place dans la dernière ligne vide et le
masque. Jusque là tout est normal.
Mais ensuite quand j'ajoute des projets, cela les met A LA PLACE du projet
masqué. La ligne reste masquée et tous les projets que j'ajoute ensuite se
mette sur cette ligne et remplace le projet inscrit précédemment.

Voici mon code (quand on clique sur le bouton valider, cela remplit mon
tableau excel à partir de la ligne 8 et de la colonne C)

Private Sub CmdValidAjout_Click()

'aller dans la première cellule vide
Dim C As Integer

Range("c8").Select
C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

'Transfert de chaque détail dans la cellule correspondate du fichier excel
'Transfert année
ActiveCell.Value = UsFAjout.TbxAnnee.Value

'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Transfert Projet
ActiveCell.Value = UsFAjout.TbxProjet.Value
(...)
'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Masquer si projet terminé
If UsFAjout.ChBoxTerminé = True Then
Range((Cells(C, 3)), (Cells(C, 17))).Select
Selection.Interior.ColorIndex = 15
Selection.EntireRow.Hidden = True
End If

'trier en fonction du site et de l'année
Sheets("Projets").Range("c8:q65000").Select

Selection.Sort Key1:=Range("P8"), Order1:=xlAscending, Key2:=Range("C8") _
, Order2:=xlAscending, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom

End Sub

Y a t'il une erreur dans mon code ou est ce que je dois ajouter quelque
chose pour que quand la macro recherche la dernière ligne vide elle
considère la ligne masqué comme "non vide"?

J'espère avoir été claire et j'espère que vous pourrez m'aider.
Merci par avance
Dospace








Dospace
Le #4479441
Merci de ta réponse.
Malheureusement, cela ne fonctionne pas. Le problème reste le même.
Je vais essayer de partir de ton changement et tester mais si tu as une
autre idée, je suis preneuse!!

Merci beaucoup en tout cas!

"FFO"
Salut Dospace
Ton disfonctionnement se situe dans la partie de ton code suivant :

C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

Qui réagit de manière différente selon que les dernières lignes sont
masquées ou pas
Je te propose cette modification :
(Début de ton code)
c = Sheets("Projets").Range("c65530").End(xlUp).Row
c = c + 1
Cells(c, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select
Do While ActiveCell.EntireRow.Hidden = True
ActiveCell.Offset(1, 0).Select
Loop
(Suite de ton code)
Celà semble mieux fonctionner
A tester biensure

Dis moi !!!



Bonjour,

Je travaille actuellement sur un projet vba et mes différentes commandes
semblent se confronter. Ce n'est pas rééllement un bug puisque mes codes
fonctionnent tous bien mais cela empêche la finalité de mon projet.
Je vous explique.

Sur excel, j'ai un tableau (fichier appelé "Projets")
Ce tableau est rempli de différents projets avec leurs détails via un
userform (UsFAjout).
A chaque ajout, la macro recherche la dernière ligne vide et ajoute la
ligne
à ce niveau.
Il peut arriver qu'un projet soit terminé, dans ce cas l'userform a une
checkbox que l'on doit cocher si le projet est terminé.
Si la checkbox est coché, la ligne est ajoutée suite aux autres lignes et
masquée automatiquement dans le tableau excel.

Si j'ajoute des projets, cela les place automatiquement à la dernière
ligne
non vide.
J'ajoute un projet masqué cela le place dans la dernière ligne vide et le
masque. Jusque là tout est normal.
Mais ensuite quand j'ajoute des projets, cela les met A LA PLACE du
projet
masqué. La ligne reste masquée et tous les projets que j'ajoute ensuite
se
mette sur cette ligne et remplace le projet inscrit précédemment.

Voici mon code (quand on clique sur le bouton valider, cela remplit mon
tableau excel à partir de la ligne 8 et de la colonne C)

Private Sub CmdValidAjout_Click()

'aller dans la première cellule vide
Dim C As Integer

Range("c8").Select
C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

'Transfert de chaque détail dans la cellule correspondate du fichier
excel
'Transfert année
ActiveCell.Value = UsFAjout.TbxAnnee.Value

'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Transfert Projet
ActiveCell.Value = UsFAjout.TbxProjet.Value
(...)
'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Masquer si projet terminé
If UsFAjout.ChBoxTerminé = True Then
Range((Cells(C, 3)), (Cells(C, 17))).Select
Selection.Interior.ColorIndex = 15
Selection.EntireRow.Hidden = True
End If

'trier en fonction du site et de l'année
Sheets("Projets").Range("c8:q65000").Select

Selection.Sort Key1:=Range("P8"), Order1:=xlAscending, Key2:=Range("C8")
_
, Order2:=xlAscending, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom

End Sub

Y a t'il une erreur dans mon code ou est ce que je dois ajouter quelque
chose pour que quand la macro recherche la dernière ligne vide elle
considère la ligne masqué comme "non vide"?

J'espère avoir été claire et j'espère que vous pourrez m'aider.
Merci par avance
Dospace










dunkelzahn
Le #4479371
Bonjour,

Je ne réponds pas vraiment à ton problème, mais pourquoi ne ferais tu
pas une boucle pour décacher tes projets cachés, ensuite tu insères ta
ligne et enfin tu recaches (puisque tu as un checkbox qui indique s'il
est terminé ou non c'est facile à faire).
Bien sûr une paire application.screenupdating = false &
application.screenupdating = true empechera de tout voir.


On 2 mai, 16:59, "Dospace"
Merci de ta réponse.
Malheureusement, cela ne fonctionne pas. Le problème reste le même.
Je vais essayer de partir de ton changement et tester mais si tu as une
autre idée, je suis preneuse!!

Merci beaucoup en tout cas!

"FFO"



Salut Dospace
Ton disfonctionnement se situe dans la partie de ton code suivant :

C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

Qui réagit de manière différente selon que les dernières lignes sont
masquées ou pas
Je te propose cette modification :
(Début de ton code)
c = Sheets("Projets").Range("c65530").End(xlUp).Row
c = c + 1
Cells(c, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select
Do While ActiveCell.EntireRow.Hidden = True
ActiveCell.Offset(1, 0).Select
Loop
(Suite de ton code)
Celà semble mieux fonctionner
A tester biensure

Dis moi !!!



Bonjour,

Je travaille actuellement sur un projet vba et mes différentes comma ndes
semblent se confronter. Ce n'est pas rééllement un bug puisque mes codes
fonctionnent tous bien mais cela empêche la finalité de mon projet.
Je vous explique.

Sur excel, j'ai un tableau (fichier appelé "Projets")
Ce tableau est rempli de différents projets avec leurs détails via un
userform (UsFAjout).
A chaque ajout, la macro recherche la dernière ligne vide et ajoute la
ligne
à ce niveau.
Il peut arriver qu'un projet soit terminé, dans ce cas l'userform a une
checkbox que l'on doit cocher si le projet est terminé.
Si la checkbox est coché, la ligne est ajoutée suite aux autres li gnes et
masquée automatiquement dans le tableau excel.

Si j'ajoute des projets, cela les place automatiquement à la derni ère
ligne
non vide.
J'ajoute un projet masqué cela le place dans la dernière ligne vid e et le
masque. Jusque là tout est normal.
Mais ensuite quand j'ajoute des projets, cela les met A LA PLACE du
projet
masqué. La ligne reste masquée et tous les projets que j'ajoute en suite
se
mette sur cette ligne et remplace le projet inscrit précédemment.

Voici mon code (quand on clique sur le bouton valider, cela remplit mon
tableau excel à partir de la ligne 8 et de la colonne C)

Private Sub CmdValidAjout_Click()

'aller dans la première cellule vide
Dim C As Integer

Range("c8").Select
C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

'Transfert de chaque détail dans la cellule correspondate du fichier
excel
'Transfert année
ActiveCell.Value = UsFAjout.TbxAnnee.Value

'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Transfert Projet
ActiveCell.Value = UsFAjout.TbxProjet.Value
(...)
'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Masquer si projet terminé
If UsFAjout.ChBoxTerminé = True Then
Range((Cells(C, 3)), (Cells(C, 17))).Select
Selection.Interior.ColorIndex = 15
Selection.EntireRow.Hidden = True
End If

'trier en fonction du site et de l'année
Sheets("Projets").Range("c8:q65000").Select

Selection.Sort Key1:=Range("P8"), Order1:=xlAscending, Key2:=Ran ge("C8")
_
, Order2:=xlAscending, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom

End Sub

Y a t'il une erreur dans mon code ou est ce que je dois ajouter quelque
chose pour que quand la macro recherche la dernière ligne vide elle
considère la ligne masqué comme "non vide"?

J'espère avoir été claire et j'espère que vous pourrez m'aider.
Merci par avance
Dospace- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




FFO
Le #4479361
Mon changement à pour but de déplacer la cellule active d'1 ligne si elle
tombe sur une cellule dont la ligne est masquée
Prends uniquement mon petit bout de code et fait le test avec et sans
cellule masquée
Tu constateras que la cellule active se place toujours sur la première
cellule vide independemment d'une ligne eventuellement masquée
Ce qui n'était pas le cas avec ton même bout de code
Je suis donc étonné que celà ne convienne pas

Une suggestion :
Tu devrais mettre des points d'arret et d'exécuter ton code avec la touche
F5 pour cerner la partie défaillante et de nous la communiquer
Il est difficile pour nous d'entreprendre cette manipulation n'ayant pas
tous les éléments du fichier

Tiens nous informé


Merci de ta réponse.
Malheureusement, cela ne fonctionne pas. Le problème reste le même.
Je vais essayer de partir de ton changement et tester mais si tu as une
autre idée, je suis preneuse!!

Merci beaucoup en tout cas!

"FFO"
Salut Dospace
Ton disfonctionnement se situe dans la partie de ton code suivant :

C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

Qui réagit de manière différente selon que les dernières lignes sont
masquées ou pas
Je te propose cette modification :
(Début de ton code)
c = Sheets("Projets").Range("c65530").End(xlUp).Row
c = c + 1
Cells(c, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select
Do While ActiveCell.EntireRow.Hidden = True
ActiveCell.Offset(1, 0).Select
Loop
(Suite de ton code)
Celà semble mieux fonctionner
A tester biensure

Dis moi !!!



Bonjour,

Je travaille actuellement sur un projet vba et mes différentes commandes
semblent se confronter. Ce n'est pas rééllement un bug puisque mes codes
fonctionnent tous bien mais cela empêche la finalité de mon projet.
Je vous explique.

Sur excel, j'ai un tableau (fichier appelé "Projets")
Ce tableau est rempli de différents projets avec leurs détails via un
userform (UsFAjout).
A chaque ajout, la macro recherche la dernière ligne vide et ajoute la
ligne
à ce niveau.
Il peut arriver qu'un projet soit terminé, dans ce cas l'userform a une
checkbox que l'on doit cocher si le projet est terminé.
Si la checkbox est coché, la ligne est ajoutée suite aux autres lignes et
masquée automatiquement dans le tableau excel.

Si j'ajoute des projets, cela les place automatiquement à la dernière
ligne
non vide.
J'ajoute un projet masqué cela le place dans la dernière ligne vide et le
masque. Jusque là tout est normal.
Mais ensuite quand j'ajoute des projets, cela les met A LA PLACE du
projet
masqué. La ligne reste masquée et tous les projets que j'ajoute ensuite
se
mette sur cette ligne et remplace le projet inscrit précédemment.

Voici mon code (quand on clique sur le bouton valider, cela remplit mon
tableau excel à partir de la ligne 8 et de la colonne C)

Private Sub CmdValidAjout_Click()

'aller dans la première cellule vide
Dim C As Integer

Range("c8").Select
C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

'Transfert de chaque détail dans la cellule correspondate du fichier
excel
'Transfert année
ActiveCell.Value = UsFAjout.TbxAnnee.Value

'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Transfert Projet
ActiveCell.Value = UsFAjout.TbxProjet.Value
(...)
'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Masquer si projet terminé
If UsFAjout.ChBoxTerminé = True Then
Range((Cells(C, 3)), (Cells(C, 17))).Select
Selection.Interior.ColorIndex = 15
Selection.EntireRow.Hidden = True
End If

'trier en fonction du site et de l'année
Sheets("Projets").Range("c8:q65000").Select

Selection.Sort Key1:=Range("P8"), Order1:=xlAscending, Key2:=Range("C8")
_
, Order2:=xlAscending, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom

End Sub

Y a t'il une erreur dans mon code ou est ce que je dois ajouter quelque
chose pour que quand la macro recherche la dernière ligne vide elle
considère la ligne masqué comme "non vide"?

J'espère avoir été claire et j'espère que vous pourrez m'aider.
Merci par avance
Dospace















Dospace
Le #4479341
Bonjour
Et merci pour ton idée.
J'ai tenté plusieurs essais, malheureusement cela ne donne pas de résultat
probant.
De plus, je t'avoue que je connais pas la paire application dont tu parles.

J'ai tenté de faire ceci à partir de ton idée:
Cela cherche la dernière ligne utilisée.
Si la ligne est cachée, cela la "décache" et va à la ligne en dessous
Cela ne marche pas.

Aussi j'ai cherché à faire la même chose sans "décacher" la ligne, cela ne
fonctionne pas plus.

Je ne sais pas comment faire pour "décacher" toutes les lignes cachées avant
d'ajouter un nouveau projet et de les recacher ensuite.
En ce qui concerne ma checkbox je ne l'utilise que lors de l'ajout d'un
projet, je ne peux pas m'en servir pour cacher toutes les lignes que
j'aurais précédemment décachées.
J'espère être claire...


Merci de votre aide


De


"dunkelzahn" news:
Bonjour,

Je ne réponds pas vraiment à ton problème, mais pourquoi ne ferais tu
pas une boucle pour décacher tes projets cachés, ensuite tu insères ta
ligne et enfin tu recaches (puisque tu as un checkbox qui indique s'il
est terminé ou non c'est facile à faire).
Bien sûr une paire application.screenupdating = false &
application.screenupdating = true empechera de tout voir.


On 2 mai, 16:59, "Dospace"
Merci de ta réponse.
Malheureusement, cela ne fonctionne pas. Le problème reste le même.
Je vais essayer de partir de ton changement et tester mais si tu as une
autre idée, je suis preneuse!!

Merci beaucoup en tout cas!

"FFO"



Salut Dospace
Ton disfonctionnement se situe dans la partie de ton code suivant :

C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

Qui réagit de manière différente selon que les dernières lignes sont
masquées ou pas
Je te propose cette modification :
(Début de ton code)
c = Sheets("Projets").Range("c65530").End(xlUp).Row
c = c + 1
Cells(c, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select
Do While ActiveCell.EntireRow.Hidden = True
ActiveCell.Offset(1, 0).Select
Loop
(Suite de ton code)
Celà semble mieux fonctionner
A tester biensure

Dis moi !!!



Bonjour,

Je travaille actuellement sur un projet vba et mes différentes
commandes
semblent se confronter. Ce n'est pas rééllement un bug puisque mes
codes
fonctionnent tous bien mais cela empêche la finalité de mon projet.
Je vous explique.

Sur excel, j'ai un tableau (fichier appelé "Projets")
Ce tableau est rempli de différents projets avec leurs détails via un
userform (UsFAjout).
A chaque ajout, la macro recherche la dernière ligne vide et ajoute la
ligne
à ce niveau.
Il peut arriver qu'un projet soit terminé, dans ce cas l'userform a une
checkbox que l'on doit cocher si le projet est terminé.
Si la checkbox est coché, la ligne est ajoutée suite aux autres lignes
et
masquée automatiquement dans le tableau excel.

Si j'ajoute des projets, cela les place automatiquement à la dernière
ligne
non vide.
J'ajoute un projet masqué cela le place dans la dernière ligne vide et
le
masque. Jusque là tout est normal.
Mais ensuite quand j'ajoute des projets, cela les met A LA PLACE du
projet
masqué. La ligne reste masquée et tous les projets que j'ajoute ensuite
se
mette sur cette ligne et remplace le projet inscrit précédemment.

Voici mon code (quand on clique sur le bouton valider, cela remplit mon
tableau excel à partir de la ligne 8 et de la colonne C)

Private Sub CmdValidAjout_Click()

'aller dans la première cellule vide
Dim C As Integer

Range("c8").Select
C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

'Transfert de chaque détail dans la cellule correspondate du fichier
excel
'Transfert année
ActiveCell.Value = UsFAjout.TbxAnnee.Value

'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Transfert Projet
ActiveCell.Value = UsFAjout.TbxProjet.Value
(...)
'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Masquer si projet terminé
If UsFAjout.ChBoxTerminé = True Then
Range((Cells(C, 3)), (Cells(C, 17))).Select
Selection.Interior.ColorIndex = 15
Selection.EntireRow.Hidden = True
End If

'trier en fonction du site et de l'année
Sheets("Projets").Range("c8:q65000").Select

Selection.Sort Key1:=Range("P8"), Order1:=xlAscending,
Key2:=Range("C8")
_
, Order2:=xlAscending, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom

End Sub

Y a t'il une erreur dans mon code ou est ce que je dois ajouter quelque
chose pour que quand la macro recherche la dernière ligne vide elle
considère la ligne masqué comme "non vide"?

J'espère avoir été claire et j'espère que vous pourrez m'aider.
Merci par avance
Dospace- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




Dospace
Le #4479301
Je te fais toutes mes excuses FFO, Honte à moi de ne pas avoir testé petit à
petit

Ton code fonctionne bien (avec et sans ligne cachée).
Je vais tester petit à petit les différentes parties de mon code et je te
dirais.

Un grand merci et encore toutes mes excuses!!

"FFO"
Mon changement à pour but de déplacer la cellule active d'1 ligne si elle
tombe sur une cellule dont la ligne est masquée
Prends uniquement mon petit bout de code et fait le test avec et sans
cellule masquée
Tu constateras que la cellule active se place toujours sur la première
cellule vide independemment d'une ligne eventuellement masquée
Ce qui n'était pas le cas avec ton même bout de code
Je suis donc étonné que celà ne convienne pas

Une suggestion :
Tu devrais mettre des points d'arret et d'exécuter ton code avec la touche
F5 pour cerner la partie défaillante et de nous la communiquer
Il est difficile pour nous d'entreprendre cette manipulation n'ayant pas
tous les éléments du fichier

Tiens nous informé


Merci de ta réponse.
Malheureusement, cela ne fonctionne pas. Le problème reste le même.
Je vais essayer de partir de ton changement et tester mais si tu as une
autre idée, je suis preneuse!!

Merci beaucoup en tout cas!

"FFO"
Salut Dospace
Ton disfonctionnement se situe dans la partie de ton code suivant :

C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

Qui réagit de manière différente selon que les dernières lignes sont
masquées ou pas
Je te propose cette modification :
(Début de ton code)
c = Sheets("Projets").Range("c65530").End(xlUp).Row
c = c + 1
Cells(c, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select
Do While ActiveCell.EntireRow.Hidden = True
ActiveCell.Offset(1, 0).Select
Loop
(Suite de ton code)
Celà semble mieux fonctionner
A tester biensure

Dis moi !!!



Bonjour,

Je travaille actuellement sur un projet vba et mes différentes
commandes
semblent se confronter. Ce n'est pas rééllement un bug puisque mes
codes
fonctionnent tous bien mais cela empêche la finalité de mon projet.
Je vous explique.

Sur excel, j'ai un tableau (fichier appelé "Projets")
Ce tableau est rempli de différents projets avec leurs détails via un
userform (UsFAjout).
A chaque ajout, la macro recherche la dernière ligne vide et ajoute la
ligne
à ce niveau.
Il peut arriver qu'un projet soit terminé, dans ce cas l'userform a
une
checkbox que l'on doit cocher si le projet est terminé.
Si la checkbox est coché, la ligne est ajoutée suite aux autres lignes
et
masquée automatiquement dans le tableau excel.

Si j'ajoute des projets, cela les place automatiquement à la dernière
ligne
non vide.
J'ajoute un projet masqué cela le place dans la dernière ligne vide et
le
masque. Jusque là tout est normal.
Mais ensuite quand j'ajoute des projets, cela les met A LA PLACE du
projet
masqué. La ligne reste masquée et tous les projets que j'ajoute
ensuite
se
mette sur cette ligne et remplace le projet inscrit précédemment.

Voici mon code (quand on clique sur le bouton valider, cela remplit
mon
tableau excel à partir de la ligne 8 et de la colonne C)

Private Sub CmdValidAjout_Click()

'aller dans la première cellule vide
Dim C As Integer

Range("c8").Select
C = Sheets("Projets").Range("c65530").End(xlUp).Row
C = C + 1
Cells(C, 1).Select
ActiveCell.Offset(0, 2).Range("a1").Select

'Transfert de chaque détail dans la cellule correspondate du fichier
excel
'Transfert année
ActiveCell.Value = UsFAjout.TbxAnnee.Value

'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Transfert Projet
ActiveCell.Value = UsFAjout.TbxProjet.Value
(...)
'se déplacer vers colonne suivante même ligne
ActiveCell.Offset(0, 1).Range("a1").Select

'Masquer si projet terminé
If UsFAjout.ChBoxTerminé = True Then
Range((Cells(C, 3)), (Cells(C, 17))).Select
Selection.Interior.ColorIndex = 15
Selection.EntireRow.Hidden = True
End If

'trier en fonction du site et de l'année
Sheets("Projets").Range("c8:q65000").Select

Selection.Sort Key1:=Range("P8"), Order1:=xlAscending,
Key2:=Range("C8")
_
, Order2:=xlAscending, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom

End Sub

Y a t'il une erreur dans mon code ou est ce que je dois ajouter
quelque
chose pour que quand la macro recherche la dernière ligne vide elle
considère la ligne masqué comme "non vide"?

J'espère avoir été claire et j'espère que vous pourrez m'aider.
Merci par avance
Dospace

















Publicité
Poster une réponse
Anonyme