Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro pour grouper des lignes... suite

26 réponses
Avatar
jiffey
Bonjour à tous,



Je fais suite au post qui a suscité tant de réactions (voir ma réponse dans
le post). J'espère n'avoir froissé personne et que quelqu'un pourra résoudre
mon nouveau problème...



j'ai un tableau http://cjoint.com/?hmjWGoxicV dans lequel je souhaterais
grouper les lignes limitées par DO2.


J'ai une macro mais elle fonctionne imparfaitement :


En effet, dans la colonne DO2, lorsque les cases pleines se suivent, le code
saute ces lignes (logique).
J'ai essayé avec une double condition, mais le pb, c'est que 3 "DO2" peuvent
se suivre, voire plus.

Bref, je n'y arrive pas. :-(( Mes connaissances sont trop faibles pour
résoudre ce pb.

En espérant que quelqu'un pourra m'aider

Slts



Jiffey

10 réponses

1 2 3
Avatar
jiffey
Oui FFO je te confirme c'est uniquement DO1 qui n'est pas correct. Bizarre...


Rebonjours à toi

Une précision :
Quelque soit l'ordre d'execution des 2 macros c'est toujours la colonne DO2
qui est correcte et DO1 qui ne l'est pas ????

Merci de me confirmer


Oui, c'est que j'avais fait et la première étape marche bien et c'est en
faisant la deuixème partie de la macro que ca déconne.

J'ai essayé d'inverser les codes, et c'est identique.

je ne comprends vraiment pas... C'est embêtant car je n'arrive pas au
résultat final escompté...

Si tu as des idées...

Jiffey


Rebonjours à toi

Je me demande si le regroupement de DO1 opéré par le 1° code ne serait pas
mis à mal par le regroupement de DO2 opéré par le 2° code

Il faut savoir que dans ces regroupements l'intégralité des colonnes sont
concernées puisque les lignes entières sont prises dans cette opération

Donc dans le groupement DO1 tu impactes les cellules DO2 et dans le
groupement DO2 tu impactes les cellules DO1

Fais ce test :

Met les 2 codes dans une même macro
Mets un point d'arrêt en regard de la 1° ligne du 2° code (clique à côté de
la ligne dans le bandeau gris vertical)
Exécutes la macro qui s'arrètera au point d'arrêt
Regardes le résulat du 1° regroupement
Puis retournes dans le script et fait F5 pour continuer l'exécution
Regardes le résultat du 2° regroupement et le précédent

Dis moi !!!!


Re-bonjour FFO,


Je n'ai pas tout à fait compris la solution que tu proposes. Si tu peux me
réexpliquer (sachant que de toute façon il faut que ce soit relativement
simple car la macro doit à terme être utilisée par des gens par forcément
super fort en excel).


Par contre, j'ai encore un petit souci par rapport au pb précédent :

tjs sur le tableau : qd je mets la macro

Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 3) = "" Then
ActiveCell.Offset(-2, 3).Select
Else
ActiveCell.Offset(-1, 3).End(xlUp).Offset(-1, 0).Select
End If
Loop


ca me groupe bien les DO1


Qd je mets

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop

Ca groupe bien les DO2


Par contre,qd je combine les 2 dans une même macro (les 2 pavés ci-dessus à
la suite), ca ne fonctionne pas : ca groupe les DO2 correctement mais pas les
DO1 (groupement mais de façon incorrect).

je n'arrive pas à comprendre pourquoi.

Peux-tu venir à ma rescousse une fois de plus s'il te plait ?


Merci encore

JF


Rebonjours à toi

Je ne sais pas si la suppression voir d'une manière plus générale
l'intervention sur les macros par code VBA est possible
J'ai moi même fais plusieurs tentatives sans succés
Je laisse les têtes pensantes de ce Forum s'il le souhaite s'exprimer sur ce
sujet

Par contre il est possible d'enregistrer ce code dans un document excel
propre et à partir de ton document de commander cette macro et de supprimer
ce document

Si cette solution te convient je peux t'aider à la mettre en place

Dis moi !!!


Bonjour FFO et encore une fois merci pour ce code !!

Ca marche nickel !!

J'ai une dernière question (enfin dernière pour l'instant ;-D ) :

Je souhaiterais à la fin de la macro que cette dernière s'auto-supprime et
propose automatiquement une "sauvegarde sous".

Est-ce que cela est possible ?

Slts

Jiffey




Salut jiffey
Tout dabord tu n'es en rien responsable de l'échange engendré par ton post
précédent je te rassure
Tu n'en as été que le catalyseur
cette mise au point aurais eu lieu trés certainement à une autre occasion si
tu n'étais pas passé par là

Ce préambule fait j'ai regardé ton code et je te propose de le corriger
comme celà :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop
Je sais que je fais faire hurler les perfectionnistes de ce forum qui
n'apprécie pas la présence des "Select"

Certes ils alourdissent le fonctionnement de la Macro mais pour ton utilité
c'est à mon sens négligeable

Je reste ouvert à toute suggestion qui viserai à améliorer cette écriture
tout en concervant sa structure et notamment en supprimant ce mal aimé qui
est le "Select"

En tout état de cause ce bout de code s'inspirant de ta composition répond à
ton attente

Merci de me confirmer


Bonjour à tous,



Je fais suite au post qui a suscité tant de réactions (voir ma réponse dans
le post). J'espère n'avoir froissé personne et que quelqu'un pourra résoudre
mon nouveau problème...



j'ai un tableau http://cjoint.com/?hmjWGoxicV dans lequel je souhaterais
grouper les lignes limitées par DO2.


J'ai une macro mais elle fonctionne imparfaitement :


En effet, dans la colonne DO2, lorsque les cases pleines se suivent, le code
saute ces lignes (logique).
J'ai essayé avec une double condition, mais le pb, c'est que 3 "DO2" peuvent
se suivre, voire plus.

Bref, je n'y arrive pas. :-(( Mes connaissances sont trop faibles pour
résoudre ce pb.

En espérant que quelqu'un pourra m'aider

Slts



Jiffey
















Avatar
jiffey
Merci ips,

Mais je n'arrive pas à adapter ton code.

Qu'est-ce que cela donnerait-il sanchant que ma macro se trouve dans le
module3 (+ code dans le Workbook pour l'ouverture de la macro + existence
d'un userform) ?

J'ai remplacé dans un premier temps "feuil1" par "module3" ; mais rien que
là ca ne marche pas. Faut-il remplacer les ".." dans ton code ?

Merci d'avance.

Jiffey


re jiffrey
le code ci-dessous supprime le code de la feuille 2
à adapter

With ThisWorkbook.VBProject.VBComponents("feuil2").codemodule
..DeleteLines 1, .CountOfLines
End With

et celui-ci, toujours à adapter, va sauvegarder ton classeur à la fermeture
dès l'instant où la proc est installée dans le BeforeClose

ActiveWorkbook.SaveCopyAs "C:Mes documentsSauvegarde Automatique" &
ActiveWorkbook.Name

jps


"jiffey" a écrit dans le message de news:

Merci beaucoup ips !

C'est vrai que l'idéal serait d'enregistrer le fichier final sans la macro
de façon à ce que ce soit un fichier "simple".

L'objectif est d'avoir un "logiciel" qui se lance tout seul (code que j'a
inséré dans le workbook), qui donne un tableau de résultat et qui lance la
sauvegarde tout seul (le code que tu m'as donné) mais sans la macro de
façon
à réutiliser le fichier final simplement.

Je ne sais pas si j'ai été clair...

Si tu as une solution, sans forcément je suis preneur ;-)




bonjour jiffrey
si ta macro se voiture-supprime d'abord, il y a de fortes chances pour
qu'elle ne propose plus rien ensuite.....
avec cette proc, tu fais apparaître la boîte de dialogue "enregistrer
sous"

Application.Dialogs(xlDialogSaveAs).Show

voili voilou
jps
PS au fait, pourquoi veux-tu qu'elle s'auto-supprime?

"jiffey" a écrit dans le message de
news:

Bonjour FFO et encore une fois merci pour ce code !!

Ca marche nickel !!

J'ai une dernière question (enfin dernière pour l'instant ;-D ) :

Je souhaiterais à la fin de la macro que cette dernière s'auto-supprime
et
propose automatiquement une "sauvegarde sous".

Est-ce que cela est possible ?

Slts

Jiffey




Salut jiffey
Tout dabord tu n'es en rien responsable de l'échange engendré par ton
post
précédent je te rassure
Tu n'en as été que le catalyseur
cette mise au point aurais eu lieu trés certainement à une autre
occasion
si
tu n'étais pas passé par là

Ce préambule fait j'ai regardé ton code et je te propose de le
corriger
comme celà :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop
Je sais que je fais faire hurler les perfectionnistes de ce forum qui
n'apprécie pas la présence des "Select"

Certes ils alourdissent le fonctionnement de la Macro mais pour ton
utilité
c'est à mon sens négligeable

Je reste ouvert à toute suggestion qui viserai à améliorer cette
écriture
tout en concervant sa structure et notamment en supprimant ce mal aimé
qui
est le "Select"

En tout état de cause ce bout de code s'inspirant de ta composition
répond à
ton attente

Merci de me confirmer


Bonjour à tous,



Je fais suite au post qui a suscité tant de réactions (voir ma
réponse
dans
le post). J'espère n'avoir froissé personne et que quelqu'un pourra
résoudre
mon nouveau problème...



j'ai un tableau http://cjoint.com/?hmjWGoxicV dans lequel je
souhaterais
grouper les lignes limitées par DO2.


J'ai une macro mais elle fonctionne imparfaitement :


En effet, dans la colonne DO2, lorsque les cases pleines se suivent,
le
code
saute ces lignes (logique).
J'ai essayé avec une double condition, mais le pb, c'est que 3 "DO2"
peuvent
se suivre, voire plus.

Bref, je n'y arrive pas. :-(( Mes connaissances sont trop faibles
pour
résoudre ce pb.

En espérant que quelqu'un pourra m'aider

Slts



Jiffey
















Avatar
FFO
Rebonjours à toi

Ne soyons pas plus royaliste que le roi et devant cette incogruitée
inexplicable je te propose de mettre les 2 codes dans 2 macros différentes
et de rajouter à la fin de la première la ligne suivante :

Run ("Macro2")

Ainsi à la fin de l'exécution de la 1° macro cette instruction commandera
l'execution de la 2°

Celà devrait te permettre d'obtenir satisfaction enfin

Tiens moi au courrant


Oui FFO je te confirme c'est uniquement DO1 qui n'est pas correct. Bizarre...


Rebonjours à toi

Une précision :
Quelque soit l'ordre d'execution des 2 macros c'est toujours la colonne DO2
qui est correcte et DO1 qui ne l'est pas ????

Merci de me confirmer


Oui, c'est que j'avais fait et la première étape marche bien et c'est en
faisant la deuixème partie de la macro que ca déconne.

J'ai essayé d'inverser les codes, et c'est identique.

je ne comprends vraiment pas... C'est embêtant car je n'arrive pas au
résultat final escompté...

Si tu as des idées...

Jiffey


Rebonjours à toi

Je me demande si le regroupement de DO1 opéré par le 1° code ne serait pas
mis à mal par le regroupement de DO2 opéré par le 2° code

Il faut savoir que dans ces regroupements l'intégralité des colonnes sont
concernées puisque les lignes entières sont prises dans cette opération

Donc dans le groupement DO1 tu impactes les cellules DO2 et dans le
groupement DO2 tu impactes les cellules DO1

Fais ce test :

Met les 2 codes dans une même macro
Mets un point d'arrêt en regard de la 1° ligne du 2° code (clique à côté de
la ligne dans le bandeau gris vertical)
Exécutes la macro qui s'arrètera au point d'arrêt
Regardes le résulat du 1° regroupement
Puis retournes dans le script et fait F5 pour continuer l'exécution
Regardes le résultat du 2° regroupement et le précédent

Dis moi !!!!


Re-bonjour FFO,


Je n'ai pas tout à fait compris la solution que tu proposes. Si tu peux me
réexpliquer (sachant que de toute façon il faut que ce soit relativement
simple car la macro doit à terme être utilisée par des gens par forcément
super fort en excel).


Par contre, j'ai encore un petit souci par rapport au pb précédent :

tjs sur le tableau : qd je mets la macro

Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 3) = "" Then
ActiveCell.Offset(-2, 3).Select
Else
ActiveCell.Offset(-1, 3).End(xlUp).Offset(-1, 0).Select
End If
Loop


ca me groupe bien les DO1


Qd je mets

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop

Ca groupe bien les DO2


Par contre,qd je combine les 2 dans une même macro (les 2 pavés ci-dessus à
la suite), ca ne fonctionne pas : ca groupe les DO2 correctement mais pas les
DO1 (groupement mais de façon incorrect).

je n'arrive pas à comprendre pourquoi.

Peux-tu venir à ma rescousse une fois de plus s'il te plait ?


Merci encore

JF


Rebonjours à toi

Je ne sais pas si la suppression voir d'une manière plus générale
l'intervention sur les macros par code VBA est possible
J'ai moi même fais plusieurs tentatives sans succés
Je laisse les têtes pensantes de ce Forum s'il le souhaite s'exprimer sur ce
sujet

Par contre il est possible d'enregistrer ce code dans un document excel
propre et à partir de ton document de commander cette macro et de supprimer
ce document

Si cette solution te convient je peux t'aider à la mettre en place

Dis moi !!!


Bonjour FFO et encore une fois merci pour ce code !!

Ca marche nickel !!

J'ai une dernière question (enfin dernière pour l'instant ;-D ) :

Je souhaiterais à la fin de la macro que cette dernière s'auto-supprime et
propose automatiquement une "sauvegarde sous".

Est-ce que cela est possible ?

Slts

Jiffey




Salut jiffey
Tout dabord tu n'es en rien responsable de l'échange engendré par ton post
précédent je te rassure
Tu n'en as été que le catalyseur
cette mise au point aurais eu lieu trés certainement à une autre occasion si
tu n'étais pas passé par là

Ce préambule fait j'ai regardé ton code et je te propose de le corriger
comme celà :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop
Je sais que je fais faire hurler les perfectionnistes de ce forum qui
n'apprécie pas la présence des "Select"

Certes ils alourdissent le fonctionnement de la Macro mais pour ton utilité
c'est à mon sens négligeable

Je reste ouvert à toute suggestion qui viserai à améliorer cette écriture
tout en concervant sa structure et notamment en supprimant ce mal aimé qui
est le "Select"

En tout état de cause ce bout de code s'inspirant de ta composition répond à
ton attente

Merci de me confirmer


Bonjour à tous,



Je fais suite au post qui a suscité tant de réactions (voir ma réponse dans
le post). J'espère n'avoir froissé personne et que quelqu'un pourra résoudre
mon nouveau problème...



j'ai un tableau http://cjoint.com/?hmjWGoxicV dans lequel je souhaterais
grouper les lignes limitées par DO2.


J'ai une macro mais elle fonctionne imparfaitement :


En effet, dans la colonne DO2, lorsque les cases pleines se suivent, le code
saute ces lignes (logique).
J'ai essayé avec une double condition, mais le pb, c'est que 3 "DO2" peuvent
se suivre, voire plus.

Bref, je n'y arrive pas. :-(( Mes connaissances sont trop faibles pour
résoudre ce pb.

En espérant que quelqu'un pourra m'aider

Slts



Jiffey


















Avatar
jiffey
Merci FFO mais malheureusement cela ne marche pas car c'est vraiment
l'enchainement des 2 codes qui entraine l'erreur. Donc le fait de les mettre
dans 2 macros différentes n'y change rien.

Autrement dit : le code 1 marche pour les DO1 ; le code 2 marche pour les
DO2 ; mais code 1 + code 2 marche incorrectement pour DO1 (correctement pour
DO2 en revanche).





Rebonjours à toi

Ne soyons pas plus royaliste que le roi et devant cette incogruitée
inexplicable je te propose de mettre les 2 codes dans 2 macros différentes
et de rajouter à la fin de la première la ligne suivante :

Run ("Macro2")

Ainsi à la fin de l'exécution de la 1° macro cette instruction commandera
l'execution de la 2°

Celà devrait te permettre d'obtenir satisfaction enfin

Tiens moi au courrant


Oui FFO je te confirme c'est uniquement DO1 qui n'est pas correct. Bizarre...


Rebonjours à toi

Une précision :
Quelque soit l'ordre d'execution des 2 macros c'est toujours la colonne DO2
qui est correcte et DO1 qui ne l'est pas ????

Merci de me confirmer


Oui, c'est que j'avais fait et la première étape marche bien et c'est en
faisant la deuixème partie de la macro que ca déconne.

J'ai essayé d'inverser les codes, et c'est identique.

je ne comprends vraiment pas... C'est embêtant car je n'arrive pas au
résultat final escompté...

Si tu as des idées...

Jiffey


Rebonjours à toi

Je me demande si le regroupement de DO1 opéré par le 1° code ne serait pas
mis à mal par le regroupement de DO2 opéré par le 2° code

Il faut savoir que dans ces regroupements l'intégralité des colonnes sont
concernées puisque les lignes entières sont prises dans cette opération

Donc dans le groupement DO1 tu impactes les cellules DO2 et dans le
groupement DO2 tu impactes les cellules DO1

Fais ce test :

Met les 2 codes dans une même macro
Mets un point d'arrêt en regard de la 1° ligne du 2° code (clique à côté de
la ligne dans le bandeau gris vertical)
Exécutes la macro qui s'arrètera au point d'arrêt
Regardes le résulat du 1° regroupement
Puis retournes dans le script et fait F5 pour continuer l'exécution
Regardes le résultat du 2° regroupement et le précédent

Dis moi !!!!


Re-bonjour FFO,


Je n'ai pas tout à fait compris la solution que tu proposes. Si tu peux me
réexpliquer (sachant que de toute façon il faut que ce soit relativement
simple car la macro doit à terme être utilisée par des gens par forcément
super fort en excel).


Par contre, j'ai encore un petit souci par rapport au pb précédent :

tjs sur le tableau : qd je mets la macro

Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 3) = "" Then
ActiveCell.Offset(-2, 3).Select
Else
ActiveCell.Offset(-1, 3).End(xlUp).Offset(-1, 0).Select
End If
Loop


ca me groupe bien les DO1


Qd je mets

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop

Ca groupe bien les DO2


Par contre,qd je combine les 2 dans une même macro (les 2 pavés ci-dessus à
la suite), ca ne fonctionne pas : ca groupe les DO2 correctement mais pas les
DO1 (groupement mais de façon incorrect).

je n'arrive pas à comprendre pourquoi.

Peux-tu venir à ma rescousse une fois de plus s'il te plait ?


Merci encore

JF


Rebonjours à toi

Je ne sais pas si la suppression voir d'une manière plus générale
l'intervention sur les macros par code VBA est possible
J'ai moi même fais plusieurs tentatives sans succés
Je laisse les têtes pensantes de ce Forum s'il le souhaite s'exprimer sur ce
sujet

Par contre il est possible d'enregistrer ce code dans un document excel
propre et à partir de ton document de commander cette macro et de supprimer
ce document

Si cette solution te convient je peux t'aider à la mettre en place

Dis moi !!!


Bonjour FFO et encore une fois merci pour ce code !!

Ca marche nickel !!

J'ai une dernière question (enfin dernière pour l'instant ;-D ) :

Je souhaiterais à la fin de la macro que cette dernière s'auto-supprime et
propose automatiquement une "sauvegarde sous".

Est-ce que cela est possible ?

Slts

Jiffey




Salut jiffey
Tout dabord tu n'es en rien responsable de l'échange engendré par ton post
précédent je te rassure
Tu n'en as été que le catalyseur
cette mise au point aurais eu lieu trés certainement à une autre occasion si
tu n'étais pas passé par là

Ce préambule fait j'ai regardé ton code et je te propose de le corriger
comme celà :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop
Je sais que je fais faire hurler les perfectionnistes de ce forum qui
n'apprécie pas la présence des "Select"

Certes ils alourdissent le fonctionnement de la Macro mais pour ton utilité
c'est à mon sens négligeable

Je reste ouvert à toute suggestion qui viserai à améliorer cette écriture
tout en concervant sa structure et notamment en supprimant ce mal aimé qui
est le "Select"

En tout état de cause ce bout de code s'inspirant de ta composition répond à
ton attente

Merci de me confirmer


Bonjour à tous,



Je fais suite au post qui a suscité tant de réactions (voir ma réponse dans
le post). J'espère n'avoir froissé personne et que quelqu'un pourra résoudre
mon nouveau problème...



j'ai un tableau http://cjoint.com/?hmjWGoxicV dans lequel je souhaterais
grouper les lignes limitées par DO2.


J'ai une macro mais elle fonctionne imparfaitement :


En effet, dans la colonne DO2, lorsque les cases pleines se suivent, le code
saute ces lignes (logique).
J'ai essayé avec une double condition, mais le pb, c'est que 3 "DO2" peuvent
se suivre, voire plus.

Bref, je n'y arrive pas. :-(( Mes connaissances sont trop faibles pour
résoudre ce pb.

En espérant que quelqu'un pourra m'aider

Slts



Jiffey




















Avatar
FFO
Rebonjour à toi

je reste persuadé qu'il ya interaction des 2 regroupements liée au fait que
l'on sollicite à chaque fois les lignes entières pour cette opération

Je te propose donc pour éviter cet inconvénient ces codes modifiés qui ne
prennent dans le regroupement que les cellules de la de colonne A à la
colonne D ou E en fonction de celle qui est traitée

Tu traites en priorité la colonne E (DO2) avec ce code :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, -4)).Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 3) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-3, 4).Select
End If
Loop

Puis la colonne D (DO1) avec ce code :

Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, -3)).Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 3) = "" Then
ActiveCell.Offset(-2, 3).Select
Else
ActiveCell.Offset(-1, 3).End(xlUp).Offset(-1, 0).Select
End If
Loop

Tu mets donc dans une seule Macro ces 2 codes dans cet ordre

J'espère que cette fois-ci !!!!!


Merci FFO mais malheureusement cela ne marche pas car c'est vraiment
l'enchainement des 2 codes qui entraine l'erreur. Donc le fait de les mettre
dans 2 macros différentes n'y change rien.

Autrement dit : le code 1 marche pour les DO1 ; le code 2 marche pour les
DO2 ; mais code 1 + code 2 marche incorrectement pour DO1 (correctement pour
DO2 en revanche).





Rebonjours à toi

Ne soyons pas plus royaliste que le roi et devant cette incogruitée
inexplicable je te propose de mettre les 2 codes dans 2 macros différentes
et de rajouter à la fin de la première la ligne suivante :

Run ("Macro2")

Ainsi à la fin de l'exécution de la 1° macro cette instruction commandera
l'execution de la 2°

Celà devrait te permettre d'obtenir satisfaction enfin

Tiens moi au courrant


Oui FFO je te confirme c'est uniquement DO1 qui n'est pas correct. Bizarre...


Rebonjours à toi

Une précision :
Quelque soit l'ordre d'execution des 2 macros c'est toujours la colonne DO2
qui est correcte et DO1 qui ne l'est pas ????

Merci de me confirmer


Oui, c'est que j'avais fait et la première étape marche bien et c'est en
faisant la deuixème partie de la macro que ca déconne.

J'ai essayé d'inverser les codes, et c'est identique.

je ne comprends vraiment pas... C'est embêtant car je n'arrive pas au
résultat final escompté...

Si tu as des idées...

Jiffey


Rebonjours à toi

Je me demande si le regroupement de DO1 opéré par le 1° code ne serait pas
mis à mal par le regroupement de DO2 opéré par le 2° code

Il faut savoir que dans ces regroupements l'intégralité des colonnes sont
concernées puisque les lignes entières sont prises dans cette opération

Donc dans le groupement DO1 tu impactes les cellules DO2 et dans le
groupement DO2 tu impactes les cellules DO1

Fais ce test :

Met les 2 codes dans une même macro
Mets un point d'arrêt en regard de la 1° ligne du 2° code (clique à côté de
la ligne dans le bandeau gris vertical)
Exécutes la macro qui s'arrètera au point d'arrêt
Regardes le résulat du 1° regroupement
Puis retournes dans le script et fait F5 pour continuer l'exécution
Regardes le résultat du 2° regroupement et le précédent

Dis moi !!!!


Re-bonjour FFO,


Je n'ai pas tout à fait compris la solution que tu proposes. Si tu peux me
réexpliquer (sachant que de toute façon il faut que ce soit relativement
simple car la macro doit à terme être utilisée par des gens par forcément
super fort en excel).


Par contre, j'ai encore un petit souci par rapport au pb précédent :

tjs sur le tableau : qd je mets la macro

Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 3) = "" Then
ActiveCell.Offset(-2, 3).Select
Else
ActiveCell.Offset(-1, 3).End(xlUp).Offset(-1, 0).Select
End If
Loop


ca me groupe bien les DO1


Qd je mets

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop

Ca groupe bien les DO2


Par contre,qd je combine les 2 dans une même macro (les 2 pavés ci-dessus à
la suite), ca ne fonctionne pas : ca groupe les DO2 correctement mais pas les
DO1 (groupement mais de façon incorrect).

je n'arrive pas à comprendre pourquoi.

Peux-tu venir à ma rescousse une fois de plus s'il te plait ?


Merci encore

JF


Rebonjours à toi

Je ne sais pas si la suppression voir d'une manière plus générale
l'intervention sur les macros par code VBA est possible
J'ai moi même fais plusieurs tentatives sans succés
Je laisse les têtes pensantes de ce Forum s'il le souhaite s'exprimer sur ce
sujet

Par contre il est possible d'enregistrer ce code dans un document excel
propre et à partir de ton document de commander cette macro et de supprimer
ce document

Si cette solution te convient je peux t'aider à la mettre en place

Dis moi !!!


Bonjour FFO et encore une fois merci pour ce code !!

Ca marche nickel !!

J'ai une dernière question (enfin dernière pour l'instant ;-D ) :

Je souhaiterais à la fin de la macro que cette dernière s'auto-supprime et
propose automatiquement une "sauvegarde sous".

Est-ce que cela est possible ?

Slts

Jiffey




Salut jiffey
Tout dabord tu n'es en rien responsable de l'échange engendré par ton post
précédent je te rassure
Tu n'en as été que le catalyseur
cette mise au point aurais eu lieu trés certainement à une autre occasion si
tu n'étais pas passé par là

Ce préambule fait j'ai regardé ton code et je te propose de le corriger
comme celà :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop
Je sais que je fais faire hurler les perfectionnistes de ce forum qui
n'apprécie pas la présence des "Select"

Certes ils alourdissent le fonctionnement de la Macro mais pour ton utilité
c'est à mon sens négligeable

Je reste ouvert à toute suggestion qui viserai à améliorer cette écriture
tout en concervant sa structure et notamment en supprimant ce mal aimé qui
est le "Select"

En tout état de cause ce bout de code s'inspirant de ta composition répond à
ton attente

Merci de me confirmer


Bonjour à tous,



Je fais suite au post qui a suscité tant de réactions (voir ma réponse dans
le post). J'espère n'avoir froissé personne et que quelqu'un pourra résoudre
mon nouveau problème...



j'ai un tableau http://cjoint.com/?hmjWGoxicV dans lequel je souhaterais
grouper les lignes limitées par DO2.


J'ai une macro mais elle fonctionne imparfaitement :


En effet, dans la colonne DO2, lorsque les cases pleines se suivent, le code
saute ces lignes (logique).
J'ai essayé avec une double condition, mais le pb, c'est que 3 "DO2" peuvent
se suivre, voire plus.

Bref, je n'y arrive pas. :-(( Mes connaissances sont trop faibles pour
résoudre ce pb.

En espérant que quelqu'un pourra m'aider

Slts



Jiffey






















Avatar
jps
re re jiffrey
oui, oui, le copier-coller a créé un "." supplémentaire totafi
superfétatoire : à supprimer, donc et attention au retour de ligne...
pour ta suppression, tu pourrais utiliser ce code de denis michon qui
élimine aussi bien les codes que les formulaires :

Sub SupprimeToutCodeEtFormulaire()
Dim VBComp As Object
Dim VBComps As Object
Set VBComps = ActiveWorkbook.VBProject.VBComponents
For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp
End Sub

good luck
jps


"jiffey" a écrit dans le message de news:

Merci ips,

Mais je n'arrive pas à adapter ton code.

Qu'est-ce que cela donnerait-il sanchant que ma macro se trouve dans le
module3 (+ code dans le Workbook pour l'ouverture de la macro + existence
d'un userform) ?

J'ai remplacé dans un premier temps "feuil1" par "module3" ; mais rien que
là ca ne marche pas. Faut-il remplacer les ".." dans ton code ?

Merci d'avance.

Jiffey


re jiffrey
le code ci-dessous supprime le code de la feuille 2
à adapter

With ThisWorkbook.VBProject.VBComponents("feuil2").codemodule
.DeleteLines 1, .CountOfLines
End With

et celui-ci, toujours à adapter, va sauvegarder ton classeur à la
fermeture
dès l'instant où la proc est installée dans le BeforeClose

ActiveWorkbook.SaveCopyAs "C:Mes documentsSauvegarde Automatique" &
ActiveWorkbook.Name

jps


"jiffey" a écrit dans le message de
news:

Merci beaucoup ips !

C'est vrai que l'idéal serait d'enregistrer le fichier final sans la
macro
de façon à ce que ce soit un fichier "simple".

L'objectif est d'avoir un "logiciel" qui se lance tout seul (code que
j'a
inséré dans le workbook), qui donne un tableau de résultat et qui lance
la
sauvegarde tout seul (le code que tu m'as donné) mais sans la macro de
façon
à réutiliser le fichier final simplement.

Je ne sais pas si j'ai été clair...

Si tu as une solution, sans forcément je suis preneur ;-)




bonjour jiffrey
si ta macro se voiture-supprime d'abord, il y a de fortes chances pour
qu'elle ne propose plus rien ensuite.....
avec cette proc, tu fais apparaître la boîte de dialogue "enregistrer
sous"

Application.Dialogs(xlDialogSaveAs).Show

voili voilou
jps
PS au fait, pourquoi veux-tu qu'elle s'auto-supprime?

"jiffey" a écrit dans le message de
news:

Bonjour FFO et encore une fois merci pour ce code !!

Ca marche nickel !!

J'ai une dernière question (enfin dernière pour l'instant ;-D ) :

Je souhaiterais à la fin de la macro que cette dernière
s'auto-supprime
et
propose automatiquement une "sauvegarde sous".

Est-ce que cela est possible ?

Slts

Jiffey




Salut jiffey
Tout dabord tu n'es en rien responsable de l'échange engendré par
ton
post
précédent je te rassure
Tu n'en as été que le catalyseur
cette mise au point aurais eu lieu trés certainement à une autre
occasion
si
tu n'étais pas passé par là

Ce préambule fait j'ai regardé ton code et je te propose de le
corriger
comme celà :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop
Je sais que je fais faire hurler les perfectionnistes de ce forum
qui
n'apprécie pas la présence des "Select"

Certes ils alourdissent le fonctionnement de la Macro mais pour ton
utilité
c'est à mon sens négligeable

Je reste ouvert à toute suggestion qui viserai à améliorer cette
écriture
tout en concervant sa structure et notamment en supprimant ce mal
aimé
qui
est le "Select"

En tout état de cause ce bout de code s'inspirant de ta composition
répond à
ton attente

Merci de me confirmer


Bonjour à tous,



Je fais suite au post qui a suscité tant de réactions (voir ma
réponse
dans
le post). J'espère n'avoir froissé personne et que quelqu'un
pourra
résoudre
mon nouveau problème...



j'ai un tableau http://cjoint.com/?hmjWGoxicV dans lequel je
souhaterais
grouper les lignes limitées par DO2.


J'ai une macro mais elle fonctionne imparfaitement :


En effet, dans la colonne DO2, lorsque les cases pleines se
suivent,
le
code
saute ces lignes (logique).
J'ai essayé avec une double condition, mais le pb, c'est que 3
"DO2"
peuvent
se suivre, voire plus.

Bref, je n'y arrive pas. :-(( Mes connaissances sont trop faibles
pour
résoudre ce pb.

En espérant que quelqu'un pourra m'aider

Slts



Jiffey


















Avatar
jiffey
Re bonjour FFO,

ARggghhh.... J'ai bien cru que ca marchait.. Mais hélas non car on revient
au pb de départ : la colonne 2 est mal regroupée : lorsque 2 cellules se
suivent, la ligne est incorporée dans le groupement.

Ex : 2010595 (ligne 66) dans le groupement du compte 2010593 (ligne 63),
alors que c'est un DO 2. Idem ligne 62.

Par contre, en effet on n'a pas de "conflit enter les 2 codes, de ce côté là
c'est bon.

Zut, zut, zut...

Jiffey


Rebonjour à toi

je reste persuadé qu'il ya interaction des 2 regroupements liée au fait que
l'on sollicite à chaque fois les lignes entières pour cette opération

Je te propose donc pour éviter cet inconvénient ces codes modifiés qui ne
prennent dans le regroupement que les cellules de la de colonne A à la
colonne D ou E en fonction de celle qui est traitée

Tu traites en priorité la colonne E (DO2) avec ce code :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, -4)).Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 3) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-3, 4).Select
End If
Loop

Puis la colonne D (DO1) avec ce code :

Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, -3)).Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 3) = "" Then
ActiveCell.Offset(-2, 3).Select
Else
ActiveCell.Offset(-1, 3).End(xlUp).Offset(-1, 0).Select
End If
Loop

Tu mets donc dans une seule Macro ces 2 codes dans cet ordre

J'espère que cette fois-ci !!!!!


Merci FFO mais malheureusement cela ne marche pas car c'est vraiment
l'enchainement des 2 codes qui entraine l'erreur. Donc le fait de les mettre
dans 2 macros différentes n'y change rien.

Autrement dit : le code 1 marche pour les DO1 ; le code 2 marche pour les
DO2 ; mais code 1 + code 2 marche incorrectement pour DO1 (correctement pour
DO2 en revanche).





Rebonjours à toi

Ne soyons pas plus royaliste que le roi et devant cette incogruitée
inexplicable je te propose de mettre les 2 codes dans 2 macros différentes
et de rajouter à la fin de la première la ligne suivante :

Run ("Macro2")

Ainsi à la fin de l'exécution de la 1° macro cette instruction commandera
l'execution de la 2°

Celà devrait te permettre d'obtenir satisfaction enfin

Tiens moi au courrant


Oui FFO je te confirme c'est uniquement DO1 qui n'est pas correct. Bizarre...


Rebonjours à toi

Une précision :
Quelque soit l'ordre d'execution des 2 macros c'est toujours la colonne DO2
qui est correcte et DO1 qui ne l'est pas ????

Merci de me confirmer


Oui, c'est que j'avais fait et la première étape marche bien et c'est en
faisant la deuixème partie de la macro que ca déconne.

J'ai essayé d'inverser les codes, et c'est identique.

je ne comprends vraiment pas... C'est embêtant car je n'arrive pas au
résultat final escompté...

Si tu as des idées...

Jiffey


Rebonjours à toi

Je me demande si le regroupement de DO1 opéré par le 1° code ne serait pas
mis à mal par le regroupement de DO2 opéré par le 2° code

Il faut savoir que dans ces regroupements l'intégralité des colonnes sont
concernées puisque les lignes entières sont prises dans cette opération

Donc dans le groupement DO1 tu impactes les cellules DO2 et dans le
groupement DO2 tu impactes les cellules DO1

Fais ce test :

Met les 2 codes dans une même macro
Mets un point d'arrêt en regard de la 1° ligne du 2° code (clique à côté de
la ligne dans le bandeau gris vertical)
Exécutes la macro qui s'arrètera au point d'arrêt
Regardes le résulat du 1° regroupement
Puis retournes dans le script et fait F5 pour continuer l'exécution
Regardes le résultat du 2° regroupement et le précédent

Dis moi !!!!


Re-bonjour FFO,


Je n'ai pas tout à fait compris la solution que tu proposes. Si tu peux me
réexpliquer (sachant que de toute façon il faut que ce soit relativement
simple car la macro doit à terme être utilisée par des gens par forcément
super fort en excel).


Par contre, j'ai encore un petit souci par rapport au pb précédent :

tjs sur le tableau : qd je mets la macro

Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 3) = "" Then
ActiveCell.Offset(-2, 3).Select
Else
ActiveCell.Offset(-1, 3).End(xlUp).Offset(-1, 0).Select
End If
Loop


ca me groupe bien les DO1


Qd je mets

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop

Ca groupe bien les DO2


Par contre,qd je combine les 2 dans une même macro (les 2 pavés ci-dessus à
la suite), ca ne fonctionne pas : ca groupe les DO2 correctement mais pas les
DO1 (groupement mais de façon incorrect).

je n'arrive pas à comprendre pourquoi.

Peux-tu venir à ma rescousse une fois de plus s'il te plait ?


Merci encore

JF


Rebonjours à toi

Je ne sais pas si la suppression voir d'une manière plus générale
l'intervention sur les macros par code VBA est possible
J'ai moi même fais plusieurs tentatives sans succés
Je laisse les têtes pensantes de ce Forum s'il le souhaite s'exprimer sur ce
sujet

Par contre il est possible d'enregistrer ce code dans un document excel
propre et à partir de ton document de commander cette macro et de supprimer
ce document

Si cette solution te convient je peux t'aider à la mettre en place

Dis moi !!!


Bonjour FFO et encore une fois merci pour ce code !!

Ca marche nickel !!

J'ai une dernière question (enfin dernière pour l'instant ;-D ) :

Je souhaiterais à la fin de la macro que cette dernière s'auto-supprime et
propose automatiquement une "sauvegarde sous".

Est-ce que cela est possible ?

Slts

Jiffey




Salut jiffey
Tout dabord tu n'es en rien responsable de l'échange engendré par ton post
précédent je te rassure
Tu n'en as été que le catalyseur
cette mise au point aurais eu lieu trés certainement à une autre occasion si
tu n'étais pas passé par là

Ce préambule fait j'ai regardé ton code et je te propose de le corriger
comme celà :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop
Je sais que je fais faire hurler les perfectionnistes de ce forum qui
n'apprécie pas la présence des "Select"

Certes ils alourdissent le fonctionnement de la Macro mais pour ton utilité
c'est à mon sens négligeable

Je reste ouvert à toute suggestion qui viserai à améliorer cette écriture
tout en concervant sa structure et notamment en supprimant ce mal aimé qui
est le "Select"

En tout état de cause ce bout de code s'inspirant de ta composition répond à
ton attente

Merci de me confirmer


Bonjour à tous,



Je fais suite au post qui a suscité tant de réactions (voir ma réponse dans
le post). J'espère n'avoir froissé personne et que quelqu'un pourra résoudre
mon nouveau problème...



j'ai un tableau http://cjoint.com/?hmjWGoxicV dans lequel je souhaterais
grouper les lignes limitées par DO2.


J'ai une macro mais elle fonctionne imparfaitement :


En effet, dans la colonne DO2, lorsque les cases pleines se suivent, le code
saute ces lignes (logique).
J'ai essayé avec une double condition, mais le pb, c'est que 3 "DO2" peuvent
se suivre, voire plus.

Bref, je n'y arrive pas. :-(( Mes connaissances sont trop faibles pour
résoudre ce pb.

En espérant que quelqu'un pourra m'aider

Slts



Jiffey
























Avatar
jiffey
Merci Jps,

Mais la macro ne marche pas :

j'ai une erreur pour

Set VBComps = ActiveWorkbook.VBProject.VBComponents

et également


With VBComp.CodeModule
..DeleteLines 1, .CountOfLines

apparait en rouge. Je l'ai changé en


With VBComp.CodeModule.DeleteLines.CountOfLines

mais pas sûr que ce soit correct. (de toute façon macro bloquée à cause de
la ligne au-dessus posant pb).


Aurais-tu une idée stp ?

Jiffey


re re jiffrey
oui, oui, le copier-coller a créé un "." supplémentaire totafi
superfétatoire : à supprimer, donc et attention au retour de ligne...
pour ta suppression, tu pourrais utiliser ce code de denis michon qui
élimine aussi bien les codes que les formulaires :

Sub SupprimeToutCodeEtFormulaire()
Dim VBComp As Object
Dim VBComps As Object
Set VBComps = ActiveWorkbook.VBProject.VBComponents
For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
..DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp
End Sub

good luck
jps


"jiffey" a écrit dans le message de news:

Merci ips,

Mais je n'arrive pas à adapter ton code.

Qu'est-ce que cela donnerait-il sanchant que ma macro se trouve dans le
module3 (+ code dans le Workbook pour l'ouverture de la macro + existence
d'un userform) ?

J'ai remplacé dans un premier temps "feuil1" par "module3" ; mais rien que
là ca ne marche pas. Faut-il remplacer les ".." dans ton code ?

Merci d'avance.

Jiffey


re jiffrey
le code ci-dessous supprime le code de la feuille 2
à adapter

With ThisWorkbook.VBProject.VBComponents("feuil2").codemodule
.DeleteLines 1, .CountOfLines
End With

et celui-ci, toujours à adapter, va sauvegarder ton classeur à la
fermeture
dès l'instant où la proc est installée dans le BeforeClose

ActiveWorkbook.SaveCopyAs "C:Mes documentsSauvegarde Automatique" &
ActiveWorkbook.Name

jps


"jiffey" a écrit dans le message de
news:

Merci beaucoup ips !

C'est vrai que l'idéal serait d'enregistrer le fichier final sans la
macro
de façon à ce que ce soit un fichier "simple".

L'objectif est d'avoir un "logiciel" qui se lance tout seul (code que
j'a
inséré dans le workbook), qui donne un tableau de résultat et qui lance
la
sauvegarde tout seul (le code que tu m'as donné) mais sans la macro de
façon
à réutiliser le fichier final simplement.

Je ne sais pas si j'ai été clair...

Si tu as une solution, sans forcément je suis preneur ;-)




bonjour jiffrey
si ta macro se voiture-supprime d'abord, il y a de fortes chances pour
qu'elle ne propose plus rien ensuite.....
avec cette proc, tu fais apparaître la boîte de dialogue "enregistrer
sous"

Application.Dialogs(xlDialogSaveAs).Show

voili voilou
jps
PS au fait, pourquoi veux-tu qu'elle s'auto-supprime?

"jiffey" a écrit dans le message de
news:

Bonjour FFO et encore une fois merci pour ce code !!

Ca marche nickel !!

J'ai une dernière question (enfin dernière pour l'instant ;-D ) :

Je souhaiterais à la fin de la macro que cette dernière
s'auto-supprime
et
propose automatiquement une "sauvegarde sous".

Est-ce que cela est possible ?

Slts

Jiffey




Salut jiffey
Tout dabord tu n'es en rien responsable de l'échange engendré par
ton
post
précédent je te rassure
Tu n'en as été que le catalyseur
cette mise au point aurais eu lieu trés certainement à une autre
occasion
si
tu n'étais pas passé par là

Ce préambule fait j'ai regardé ton code et je te propose de le
corriger
comme celà :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop
Je sais que je fais faire hurler les perfectionnistes de ce forum
qui
n'apprécie pas la présence des "Select"

Certes ils alourdissent le fonctionnement de la Macro mais pour ton
utilité
c'est à mon sens négligeable

Je reste ouvert à toute suggestion qui viserai à améliorer cette
écriture
tout en concervant sa structure et notamment en supprimant ce mal
aimé
qui
est le "Select"

En tout état de cause ce bout de code s'inspirant de ta composition
répond à
ton attente

Merci de me confirmer


Bonjour à tous,



Je fais suite au post qui a suscité tant de réactions (voir ma
réponse
dans
le post). J'espère n'avoir froissé personne et que quelqu'un
pourra
résoudre
mon nouveau problème...



j'ai un tableau http://cjoint.com/?hmjWGoxicV dans lequel je
souhaterais
grouper les lignes limitées par DO2.


J'ai une macro mais elle fonctionne imparfaitement :


En effet, dans la colonne DO2, lorsque les cases pleines se
suivent,
le
code
saute ces lignes (logique).
J'ai essayé avec une double condition, mais le pb, c'est que 3
"DO2"
peuvent
se suivre, voire plus.

Bref, je n'y arrive pas. :-(( Mes connaissances sont trop faibles
pour
résoudre ce pb.

En espérant que quelqu'un pourra m'aider

Slts



Jiffey






















Avatar
jps
attends, jiffrey, je siffle un p'tit coup pour appeler denis michon au
secours...
mais d'ores et déjà, je vois que tu n'as pas annulé un des deux points
devant DeleteLines
réessaie encore un peu avant que notre zorro (le renard en espagnol, ne
l'oublions pas) n'arrive
courage et patience, donc
jps

"jiffey" a écrit dans le message de news:

Merci Jps,

Mais la macro ne marche pas :

j'ai une erreur pour

Set VBComps = ActiveWorkbook.VBProject.VBComponents

et également


With VBComp.CodeModule
..DeleteLines 1, .CountOfLines

apparait en rouge. Je l'ai changé en


With VBComp.CodeModule.DeleteLines.CountOfLines

mais pas sûr que ce soit correct. (de toute façon macro bloquée à cause de
la ligne au-dessus posant pb).


Aurais-tu une idée stp ?

Jiffey


re re jiffrey
oui, oui, le copier-coller a créé un "." supplémentaire totafi
superfétatoire : à supprimer, donc et attention au retour de ligne...
pour ta suppression, tu pourrais utiliser ce code de denis michon qui
élimine aussi bien les codes que les formulaires :

Sub SupprimeToutCodeEtFormulaire()
Dim VBComp As Object
Dim VBComps As Object
Set VBComps = ActiveWorkbook.VBProject.VBComponents
For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
..DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp
End Sub

good luck
jps


"jiffey" a écrit dans le message de
news:

Merci ips,

Mais je n'arrive pas à adapter ton code.

Qu'est-ce que cela donnerait-il sanchant que ma macro se trouve dans le
module3 (+ code dans le Workbook pour l'ouverture de la macro +
existence
d'un userform) ?

J'ai remplacé dans un premier temps "feuil1" par "module3" ; mais rien
que
là ca ne marche pas. Faut-il remplacer les ".." dans ton code ?

Merci d'avance.

Jiffey


re jiffrey
le code ci-dessous supprime le code de la feuille 2
à adapter

With ThisWorkbook.VBProject.VBComponents("feuil2").codemodule
.DeleteLines 1, .CountOfLines
End With

et celui-ci, toujours à adapter, va sauvegarder ton classeur à la
fermeture
dès l'instant où la proc est installée dans le BeforeClose

ActiveWorkbook.SaveCopyAs "C:Mes documentsSauvegarde Automatique" &
ActiveWorkbook.Name

jps


"jiffey" a écrit dans le message de
news:

Merci beaucoup ips !

C'est vrai que l'idéal serait d'enregistrer le fichier final sans la
macro
de façon à ce que ce soit un fichier "simple".

L'objectif est d'avoir un "logiciel" qui se lance tout seul (code
que
j'a
inséré dans le workbook), qui donne un tableau de résultat et qui
lance
la
sauvegarde tout seul (le code que tu m'as donné) mais sans la macro
de
façon
à réutiliser le fichier final simplement.

Je ne sais pas si j'ai été clair...

Si tu as une solution, sans forcément je suis preneur ;-)




bonjour jiffrey
si ta macro se voiture-supprime d'abord, il y a de fortes chances
pour
qu'elle ne propose plus rien ensuite.....
avec cette proc, tu fais apparaître la boîte de dialogue
"enregistrer
sous"

Application.Dialogs(xlDialogSaveAs).Show

voili voilou
jps
PS au fait, pourquoi veux-tu qu'elle s'auto-supprime?

"jiffey" a écrit dans le message
de
news:

Bonjour FFO et encore une fois merci pour ce code !!

Ca marche nickel !!

J'ai une dernière question (enfin dernière pour l'instant ;-D ) :

Je souhaiterais à la fin de la macro que cette dernière
s'auto-supprime
et
propose automatiquement une "sauvegarde sous".

Est-ce que cela est possible ?

Slts

Jiffey




Salut jiffey
Tout dabord tu n'es en rien responsable de l'échange engendré
par
ton
post
précédent je te rassure
Tu n'en as été que le catalyseur
cette mise au point aurais eu lieu trés certainement à une autre
occasion
si
tu n'étais pas passé par là

Ce préambule fait j'ai regardé ton code et je te propose de le
corriger
comme celà :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop
Je sais que je fais faire hurler les perfectionnistes de ce
forum
qui
n'apprécie pas la présence des "Select"

Certes ils alourdissent le fonctionnement de la Macro mais pour
ton
utilité
c'est à mon sens négligeable

Je reste ouvert à toute suggestion qui viserai à améliorer cette
écriture
tout en concervant sa structure et notamment en supprimant ce
mal
aimé
qui
est le "Select"

En tout état de cause ce bout de code s'inspirant de ta
composition
répond à
ton attente

Merci de me confirmer


Bonjour à tous,



Je fais suite au post qui a suscité tant de réactions (voir ma
réponse
dans
le post). J'espère n'avoir froissé personne et que quelqu'un
pourra
résoudre
mon nouveau problème...



j'ai un tableau http://cjoint.com/?hmjWGoxicV dans lequel je
souhaterais
grouper les lignes limitées par DO2.


J'ai une macro mais elle fonctionne imparfaitement :


En effet, dans la colonne DO2, lorsque les cases pleines se
suivent,
le
code
saute ces lignes (logique).
J'ai essayé avec une double condition, mais le pb, c'est que 3
"DO2"
peuvent
se suivre, voire plus.

Bref, je n'y arrive pas. :-(( Mes connaissances sont trop
faibles
pour
résoudre ce pb.

En espérant que quelqu'un pourra m'aider

Slts



Jiffey
























Avatar
tissot.emmanuel
Bonjour,

Si le propos est de sauvegarder les données résultantes du traitement dans
un nouveau fichier et si ces données sont sur une feuille qui ne contient
pas de macro le plus simple ne serait il pas de copier cette feuille dans un
nouveau fichier ?

Sub ExportFeuille()
Dim NomFichier

ThisWorkbook.Worksheets("FeuilleResultat").Copy'Adapter le nom de la
feuille

NomFichier =
Application.GetSaveAsFilename(InitialFileName:¬tiveSheet.Name, _
fileFilter:="Fichiers Excel (*.xls), *.xls")

If VarType(NomFichier) = vbBoolean Then
MsgBox "Sauvegarde annulée"
Else
ActiveWorkbook.SaveAs FileName:=NomFichier
End If
End Sub

Cordialement,

Manu/


"jps" a écrit dans le message de news:

bonjour jiffrey
si ta macro se voiture-supprime d'abord, il y a de fortes chances pour
qu'elle ne propose plus rien ensuite.....
avec cette proc, tu fais apparaître la boîte de dialogue "enregistrer
sous"

Application.Dialogs(xlDialogSaveAs).Show

voili voilou
jps
PS au fait, pourquoi veux-tu qu'elle s'auto-supprime?

"jiffey" a écrit dans le message de
news:
Bonjour FFO et encore une fois merci pour ce code !!

Ca marche nickel !!

J'ai une dernière question (enfin dernière pour l'instant ;-D ) :

Je souhaiterais à la fin de la macro que cette dernière s'auto-supprime
et
propose automatiquement une "sauvegarde sous".

Est-ce que cela est possible ?

Slts

Jiffey




Salut jiffey
Tout dabord tu n'es en rien responsable de l'échange engendré par ton
post
précédent je te rassure
Tu n'en as été que le catalyseur
cette mise au point aurais eu lieu trés certainement à une autre
occasion si
tu n'étais pas passé par là

Ce préambule fait j'ai regardé ton code et je te propose de le corriger
comme celà :

Range("B65535").End(xlUp).Offset(0, 3).Select
Do While ActiveCell.Row > Range("B6").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 4) = "" Then
ActiveCell.Offset(-2, 4).Select
Else
ActiveCell.Offset(-1, 4).End(xlUp).Offset(-1, 0).Select
End If
Loop
Je sais que je fais faire hurler les perfectionnistes de ce forum qui
n'apprécie pas la présence des "Select"

Certes ils alourdissent le fonctionnement de la Macro mais pour ton
utilité
c'est à mon sens négligeable

Je reste ouvert à toute suggestion qui viserai à améliorer cette
écriture
tout en concervant sa structure et notamment en supprimant ce mal aimé
qui
est le "Select"

En tout état de cause ce bout de code s'inspirant de ta composition
répond à
ton attente

Merci de me confirmer


Bonjour à tous,



Je fais suite au post qui a suscité tant de réactions (voir ma réponse
dans
le post). J'espère n'avoir froissé personne et que quelqu'un pourra
résoudre
mon nouveau problème...



j'ai un tableau http://cjoint.com/?hmjWGoxicV dans lequel je
souhaterais
grouper les lignes limitées par DO2.


J'ai une macro mais elle fonctionne imparfaitement :


En effet, dans la colonne DO2, lorsque les cases pleines se suivent,
le code
saute ces lignes (logique).
J'ai essayé avec une double condition, mais le pb, c'est que 3 "DO2"
peuvent
se suivre, voire plus.

Bref, je n'y arrive pas. :-(( Mes connaissances sont trop faibles pour
résoudre ce pb.

En espérant que quelqu'un pourra m'aider

Slts



Jiffey









1 2 3