OVH Cloud OVH Cloud

Macro défi !

12 réponses
Avatar
Franck
Bonjour,

Je fais appel aux cerveaux chevronn=E9s du MPFE

Je voudrais concevoir une macro ex=E9cutant la tache=20
suivante.

Balayer ligne par ligne les valeurs des colonnes J, K, L=20
de ma feuille.
D=E8s qu'une valeur (des trois colonnes) diff=E8re de celles=20
de la ligne pr=E9c=E9dente, il faut ins=E9rer une ligne au=20
dessus de la ligne diff=E9rente.
En cellule P de la ligne ins=E9r=E9e il faut faire la somme=20
des valeurs en O du pav=E9 pr=E9c=E9dent (entre deux insertions).

Est-ce clair ?

Est ce que quelqu'un a une id=E9e du code ?

Merci d'avance

Franck

2 réponses

1 2
Avatar
Paul V.
De temps en temps, mon bon Modeste, j'aime éméttre quelques opinions
personnelles.
Et celle ci disait que, à la place de demander du code tout fait sans
essayer , il serait préférable d'utiliser l'enregistreur et l'aide pour
résoudre un problème somme toute très simple, d'autant plus qu'il est
globalement expliqué en plus sur disciplus (en morceaux , d'accord, mais
toute macro n'est finalement qu'un ensemble de morceaux bien ficelés)

Michel n'approuves pas tout de mon point de vue et l'a dit.

Voila qui cloture le débat d'autant plus que le demandeur est content.

A+

Paul V


Modeste wrote:
;-))))
c'est du lard ou du cochon???

Pour un esprit curieux, et il n'en manque pas sur MPFE
un bout de code est rarement utilisable au pied de la
lettre
et dans ce cas l'utilisateur saura:
soit l'utiliser en l'aménageant (didactisme en
s'appropriant le raisonnement d'un autre contributeur)

soit s'inspirer de l'esprit de l'exemple pour en faire
tout autre chose (ça cela me plait !!!)

soit ne rien y comprendre, dans ce cas il aura tout loisir
à s'y casser le nez en essayant quelques malheureuses
modifications, (c'est l'apprentissage par l'erreur,
didactisme banni chez les démineurs ;-)))

le fait que tu ai proposé une voie de solution sans VBA
est réellement également une preuve de didactisme,
l'utilisateur ayant alors le choix de la solution qu'il
appréhende le mieux.

de là à te dresser "courtoisement" contre Michel,
j'espère qu'aucun de vous deux n'entamera une
ficelle "Bidon des sens"
euh non... je ricane !!!!
;-)))
@+

-----Message d'origine-----
Salut Modeste,

J'ai déjà dis que je n'aime pas trop les souriettes. J'en mets quand
j'ecris quelque chose de drôle et que j'ai peur que mon lecteur ne
comprenne pas mon mauvais humour. Pas quand j'écris une vacherie ;-)
, cela risquerait d'en adoucir l'effet ;-)

Juste pour pinailler, balancer des lignes de codes incompréhensibles
pour le profane pour qu'il n'ait plus qu'à faire du copier- coller,
je vois pas ou est le coté didactique.

A+

Paul V

Modeste wrote:
;-)))
Ah ! Paul,
tu as encore oublié de remettre la souriette !

car aussi bien ta solution que celle de Michel sont tout
aussi didactiques l'une que l'autre et ont de quoi
satisfaire, les esprits chagrins ;-)))

nb:
les pseudos : je ricane ???, jerry Gaule et Hilse Maäre
sont déja pris....
;-)))
@+
-----Message d'origine-----
Bonjour,

J'avais précisé que c'était un avis personnel ;-) ce qui impliquait
fatalement que ce n'était pas l'avis de tous.
Je ne vais donc pas polémiquer sur ce sujet qui revient
régulièrement à savoir jusqu'ou va l'aide et ou commence
l'exploitation de la gentillesse. Je ne voudrais que préciser
quelques points.

Michel Gaboly wrote:
.....................
Il est clair que la découverte par soi-même est plus instructive.
Cependant,
l'enregistreur de macros ne permet pas de construire une boucle,
ce qui est
nécessaire ici.
.................

Faut lire ce que j'ai écrit, l'enregistreur de macro et l'aide en
ligne permettent sans aucunes difficultés de créer des boucles. Il
y a même plein d'exemples récupérables dans l'aide.

D'autre part, le traitement n'est pas aussi simple que
cela


C'est pour donner de la valeur à la réponse que tu trouves que
c'est pas si simple. Je trouve cela élémentaire pour ma part, des
problèmes similaires ont déjà été résolus de multiples fois sur ce
forum et rien qu'excellabo présente tous les éléments qui mis
ensemble résolvent ce petit problème.

il y a
l'habituelle

difficulté des suppressions/insertions de lignes dans
une boucle :


On ne parle pas de suppression ce qui rend la difficulté que tu
soulignes inexistante.

.....................
Ici le cas est + compliqué, car l'insertion se fait au- dessus de
la zone examinée.

Je ne vois pas pourquoi c'est + compliqué.


Il est probable que pour une forte proportion des gens qui
utilisent VBA de façon
occasionnelle, il s'agit d'une procédure relativement difficile.

C'est peut-être le cas pour Franck, puisqu'il parle de défi.

Mon opinion est que l'on recourt bien trop souvent au VBA parce que

l'on ne connait pas les bases essentielles du logiciel et que de ce
fait, donner une solution en VBA n'est sûrement pas aider la
personne intéressée.

Dans le cas qui nous occupe, la solution simple, rapide et efficace
consiste à utiliser sous totaux. Pas besoin de VBA.

Donner des lignes de code à un débutant (je ne parle pas de Frank,
je ne le connais pas) et résoudre son problème à sa place, me
parait une aberration. Aider quelqu'un qui se démène et rencontre
un problème ponctuel réel est bien plus stimulant

A+

Paul V


.




.








Avatar
Michel Gaboly
Re,

Insérer, modifier une cellule, et mettre des titres, je sais faire, mais
justement l'intérêt d'une macro c'est d'automatiser tout cela.

Ceci dit, si les sous-totaux du menu Données te conviennent, tant mieux
pour toi.

Précision, Excel est apparu en France fin 85, mais il a fallu attendre
88 pour avoir une autre version.

La version 2.0 est d'abord sortie sur PC. Elle a introduit en particulier
la création de menu et les Zones de dialogues. Ces 2 points ont été repris
ensuite dans une version 1.51 sortie pour Mac, un peu après la version
2.0 PC.



Re Michel,

J'aime avoir le dernier mot donc je reviens ;-)

Michel Gaboly wrote:
Re,

Bien sûr que Données Sous-Totaux peut être utilisé, mais c'est moins
souple :

Ah bon. C'est fait en trente seconde et le code en plusieurs minutes (pour

certains, bien plus pour un débutant)

- Les sous-totaux apparaissent dans la même colonne que les valeurs
totalisées, alors que Franck veut afficher en colonne "P" les
sous-totaux des valeurs en colonne "O", ce qui est nettement plus
lisible, car cela fait apparaître une cellule vide entre chaque
groupe de valeurs de la colonne "O".



Jamais entendu parler d'insérer? ;-)

- On n'a pas le choix du libellé correspondant au sous-total, ce
qu'une macro peut bien sûr gérer.


Jamais entendu parler de changer le contenu d'une cellule? ;-)

- Le menu "Données" s'attend à ce que la base comporte des intitulés
en haut de chaque colonne, ce qui n'est pas toujours le cas.

Tu marques un point, mettre des titres à ses colonnes, c'est pas donné à

tout le monde. ;-)

L'aide VBA peut rendre de grands services quand on en a l'habitude,
mais bien souvent les débutants ont beaucoup de mal à l'utiliser.



Uniquement ceux qui renoncent trop vite.

Quant à la simplicité de la macro, c'est strictement équivalent aux
suppressions de lignes : si on examine successivement les lignes N,
N +1, N + 2..., après une insertion il faut passer non de N à N + 1
mais à N + 2, sous peine de tester la ligne insérée (vide en J, K et
L) avec celle qui la précède.

Essaye donc d'écrire la macro, tu verras qu'il est nécessaire de gérer
cela.

Je dois pas écrire du code pour comprendre cela mais je ne vois toujours pas

ou est le problème. Il me semble normùal que si on insère quelque chose, que
l'on en tienne compte pour la suite.

Ceci dit, je ne ne prétend nullement qu'il s'agit de quelque chose de
très compliqué, juste assez pour poser des problèmes à n'importe
quel programmeur occasionnel.

OK je suis d'accord

Les seuls points sur lesquels je partage ton avis, sont :

- Il s'agit d'un problème classique. La première macro que j'ai
faite pour cela, c'était en 1986, avec la version 1.0 d'Excel ;
il s'agissait d'indiquer le détail des comptes regroupés pour un bilan
comptable.

Pas mal mais j'ai acheté mon premier mac en 85 pour avoir Excel. Pour

remplacer multiplan que j'aimais pas trop. En 86, j'avais la version 2.0, si
je ne me trompe. ;-) C'était le pied par rapport au boulot sur les grosses
bécanes.

- Il est clair qu'il vaut mieux bien connaître Excel, plutôt que de
chercher à réinventer la roue en VBA ;-))


Mais comme tu le dis, les avis personnels sont divers.

Allez hop, match nul, balle au centre et bon boulot.


A+

Paul V


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


1 2