-----Message d'origine-----
Bonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un
avis tout à fait
personnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc aussi
simple, pourquoi ne
pas essayer de le faire par toi-même en t'aidant de
l'enregistreur de macros
et de l'aide, puis de venir ici pour poser des questions
limitées et
précises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et le
plaisir de
l'apprentissage constructif . Les connaissances acquises
le serait de façon
durable et le plaisir de t'aider des cerveaux chevronnés
serait décuplé de
te voir faire un minimum d'effort au lieu d'attendre que
d'autres te machent
le boulot.
Ceci étant, je le rappelle, un avis tout à fait personnel
et heureusement
pour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J, K, L
de ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de celles
de la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la somme
des valeurs en O du pavé précédent (entre deux
insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
.
-----Message d'origine-----
Bonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un
avis tout à fait
personnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc aussi
simple, pourquoi ne
pas essayer de le faire par toi-même en t'aidant de
l'enregistreur de macros
et de l'aide, puis de venir ici pour poser des questions
limitées et
précises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et le
plaisir de
l'apprentissage constructif . Les connaissances acquises
le serait de façon
durable et le plaisir de t'aider des cerveaux chevronnés
serait décuplé de
te voir faire un minimum d'effort au lieu d'attendre que
d'autres te machent
le boulot.
Ceci étant, je le rappelle, un avis tout à fait personnel
et heureusement
pour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:
Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J, K, L
de ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de celles
de la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la somme
des valeurs en O du pavé précédent (entre deux
insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
.
-----Message d'origine-----
Bonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un
avis tout à fait
personnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc aussi
simple, pourquoi ne
pas essayer de le faire par toi-même en t'aidant de
l'enregistreur de macros
et de l'aide, puis de venir ici pour poser des questions
limitées et
précises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et le
plaisir de
l'apprentissage constructif . Les connaissances acquises
le serait de façon
durable et le plaisir de t'aider des cerveaux chevronnés
serait décuplé de
te voir faire un minimum d'effort au lieu d'attendre que
d'autres te machent
le boulot.
Ceci étant, je le rappelle, un avis tout à fait personnel
et heureusement
pour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J, K, L
de ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de celles
de la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la somme
des valeurs en O du pavé précédent (entre deux
insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
.
Bonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un avis tout à fait
personnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc aussi simple, pourquoi ne
pas essayer de le faire par toi-même en t'aidant de l'enregistreur de macros
et de l'aide, puis de venir ici pour poser des questions limitées et
précises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et le plaisir de
l'apprentissage constructif . Les connaissances acquises le serait de façon
durable et le plaisir de t'aider des cerveaux chevronnés serait décuplé de
te voir faire un minimum d'effort au lieu d'attendre que d'autres te machent
le boulot.
Ceci étant, je le rappelle, un avis tout à fait personnel et heureusement
pour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J, K, L
de ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de celles
de la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la somme
des valeurs en O du pavé précédent (entre deux insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
Bonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un avis tout à fait
personnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc aussi simple, pourquoi ne
pas essayer de le faire par toi-même en t'aidant de l'enregistreur de macros
et de l'aide, puis de venir ici pour poser des questions limitées et
précises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et le plaisir de
l'apprentissage constructif . Les connaissances acquises le serait de façon
durable et le plaisir de t'aider des cerveaux chevronnés serait décuplé de
te voir faire un minimum d'effort au lieu d'attendre que d'autres te machent
le boulot.
Ceci étant, je le rappelle, un avis tout à fait personnel et heureusement
pour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:
Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J, K, L
de ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de celles
de la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la somme
des valeurs en O du pavé précédent (entre deux insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
Bonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un avis tout à fait
personnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc aussi simple, pourquoi ne
pas essayer de le faire par toi-même en t'aidant de l'enregistreur de macros
et de l'aide, puis de venir ici pour poser des questions limitées et
précises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et le plaisir de
l'apprentissage constructif . Les connaissances acquises le serait de façon
durable et le plaisir de t'aider des cerveaux chevronnés serait décuplé de
te voir faire un minimum d'effort au lieu d'attendre que d'autres te machent
le boulot.
Ceci étant, je le rappelle, un avis tout à fait personnel et heureusement
pour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J, K, L
de ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de celles
de la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la somme
des valeurs en O du pavé précédent (entre deux insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
Bonjour,
Je ne suis qu'en partie d'accord avec toi.
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.
D'autre part, le traitement n'est pas aussi simple que cela : il y a
l'habituelle
difficulté des suppressions/insertions de lignes dans une boucle : selon
qu'une
ligne a été supprimé (ou ajoutée) lors d'un passage dans la boucle, la
ligne à
traiter lors du passage suivant n'est pas la même que s'il n'y avait pas
eu de
suppression (ou insertion). Pour résoudre cela, en cas de suppression, on
com-
mence classiquement par la dernière ligne.
Ici le cas est + compliqué, car l'insertion se fait au-dessus de la zone
examinée.
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.
Enfin, le forum s'adresse aussi à des débutants, y compris des débutants
qui veu-
lent appliquer la technique que tu préconises, essayer eux-mêmes. La
demande de
Franck me paraît un excellent exercice pour eux. ;-))
Voici une macro qui devrait te convenir, même si comme dis Paul V., tu
peux aussi
explorer les possibilités offertes par le menu "Données".
Sub SousTotaux()
Dim c As Range, Ref As Range, b As Boolean, i As Long, j As Long
b = False
Set Ref = Range("J2")
Do
Set c = Range("J2").Offset(i)
j = j + 1
If c <> c.Offset(-1) Or c.Offset(, 1) <> c.Offset(-1, 1)
Or c.Offset(, 2) <> c.Offset(-1, 2) Then
If b Then
c.EntireRow.Insert
i = i + 1
c.Offset(-1, 6).FormulaR1C1 "=SUM(R[-1]C[-1]:R[" & -j & "]C[-1])"
j = 0
Else
b = True
End If
Else
' j = j + 1
End If
i = i + 1
Loop Until IsEmpty(Ref.Offset(i))
c.Offset(1, 6).FormulaR1C1 = "=SUM(R[-1]C[-1]:R[" & -(j + 1) &
"]C[-1])"
End SubBonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un avis tout à fait
personnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc aussi simple,
pourquoi ne
pas essayer de le faire par toi-même en t'aidant de l'enregistreur de
macros
et de l'aide, puis de venir ici pour poser des questions limitées et
précises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et le plaisir de
l'apprentissage constructif . Les connaissances acquises le serait de
façon
durable et le plaisir de t'aider des cerveaux chevronnés serait décuplé
de
te voir faire un minimum d'effort au lieu d'attendre que d'autres te
machent
le boulot.
Ceci étant, je le rappelle, un avis tout à fait personnel et
heureusement
pour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J, K, L
de ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de celles
de la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la somme
des valeurs en O du pavé précédent (entre deux insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour,
Je ne suis qu'en partie d'accord avec toi.
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.
D'autre part, le traitement n'est pas aussi simple que cela : il y a
l'habituelle
difficulté des suppressions/insertions de lignes dans une boucle : selon
qu'une
ligne a été supprimé (ou ajoutée) lors d'un passage dans la boucle, la
ligne à
traiter lors du passage suivant n'est pas la même que s'il n'y avait pas
eu de
suppression (ou insertion). Pour résoudre cela, en cas de suppression, on
com-
mence classiquement par la dernière ligne.
Ici le cas est + compliqué, car l'insertion se fait au-dessus de la zone
examinée.
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.
Enfin, le forum s'adresse aussi à des débutants, y compris des débutants
qui veu-
lent appliquer la technique que tu préconises, essayer eux-mêmes. La
demande de
Franck me paraît un excellent exercice pour eux. ;-))
Voici une macro qui devrait te convenir, même si comme dis Paul V., tu
peux aussi
explorer les possibilités offertes par le menu "Données".
Sub SousTotaux()
Dim c As Range, Ref As Range, b As Boolean, i As Long, j As Long
b = False
Set Ref = Range("J2")
Do
Set c = Range("J2").Offset(i)
j = j + 1
If c <> c.Offset(-1) Or c.Offset(, 1) <> c.Offset(-1, 1)
Or c.Offset(, 2) <> c.Offset(-1, 2) Then
If b Then
c.EntireRow.Insert
i = i + 1
c.Offset(-1, 6).FormulaR1C1 "=SUM(R[-1]C[-1]:R[" & -j & "]C[-1])"
j = 0
Else
b = True
End If
Else
' j = j + 1
End If
i = i + 1
Loop Until IsEmpty(Ref.Offset(i))
c.Offset(1, 6).FormulaR1C1 = "=SUM(R[-1]C[-1]:R[" & -(j + 1) &
"]C[-1])"
End Sub
Bonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un avis tout à fait
personnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc aussi simple,
pourquoi ne
pas essayer de le faire par toi-même en t'aidant de l'enregistreur de
macros
et de l'aide, puis de venir ici pour poser des questions limitées et
précises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et le plaisir de
l'apprentissage constructif . Les connaissances acquises le serait de
façon
durable et le plaisir de t'aider des cerveaux chevronnés serait décuplé
de
te voir faire un minimum d'effort au lieu d'attendre que d'autres te
machent
le boulot.
Ceci étant, je le rappelle, un avis tout à fait personnel et
heureusement
pour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:
Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J, K, L
de ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de celles
de la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la somme
des valeurs en O du pavé précédent (entre deux insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour,
Je ne suis qu'en partie d'accord avec toi.
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.
D'autre part, le traitement n'est pas aussi simple que cela : il y a
l'habituelle
difficulté des suppressions/insertions de lignes dans une boucle : selon
qu'une
ligne a été supprimé (ou ajoutée) lors d'un passage dans la boucle, la
ligne à
traiter lors du passage suivant n'est pas la même que s'il n'y avait pas
eu de
suppression (ou insertion). Pour résoudre cela, en cas de suppression, on
com-
mence classiquement par la dernière ligne.
Ici le cas est + compliqué, car l'insertion se fait au-dessus de la zone
examinée.
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.
Enfin, le forum s'adresse aussi à des débutants, y compris des débutants
qui veu-
lent appliquer la technique que tu préconises, essayer eux-mêmes. La
demande de
Franck me paraît un excellent exercice pour eux. ;-))
Voici une macro qui devrait te convenir, même si comme dis Paul V., tu
peux aussi
explorer les possibilités offertes par le menu "Données".
Sub SousTotaux()
Dim c As Range, Ref As Range, b As Boolean, i As Long, j As Long
b = False
Set Ref = Range("J2")
Do
Set c = Range("J2").Offset(i)
j = j + 1
If c <> c.Offset(-1) Or c.Offset(, 1) <> c.Offset(-1, 1)
Or c.Offset(, 2) <> c.Offset(-1, 2) Then
If b Then
c.EntireRow.Insert
i = i + 1
c.Offset(-1, 6).FormulaR1C1 "=SUM(R[-1]C[-1]:R[" & -j & "]C[-1])"
j = 0
Else
b = True
End If
Else
' j = j + 1
End If
i = i + 1
Loop Until IsEmpty(Ref.Offset(i))
c.Offset(1, 6).FormulaR1C1 = "=SUM(R[-1]C[-1]:R[" & -(j + 1) &
"]C[-1])"
End SubBonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un avis tout à fait
personnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc aussi simple,
pourquoi ne
pas essayer de le faire par toi-même en t'aidant de l'enregistreur de
macros
et de l'aide, puis de venir ici pour poser des questions limitées et
précises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et le plaisir de
l'apprentissage constructif . Les connaissances acquises le serait de
façon
durable et le plaisir de t'aider des cerveaux chevronnés serait décuplé
de
te voir faire un minimum d'effort au lieu d'attendre que d'autres te
machent
le boulot.
Ceci étant, je le rappelle, un avis tout à fait personnel et
heureusement
pour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J, K, L
de ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de celles
de la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la somme
des valeurs en O du pavé précédent (entre deux insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
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.
................
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
: 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
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
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.
................
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
: 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
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
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.
................
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
: 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
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
-----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
.
-----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
.
-----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
.
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
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
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
;-)))
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
celaC'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
.
;-)))
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
.
;-)))
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
celaC'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
.
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
- 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".
- On n'a pas le choix du libellé correspondant au sous-total, ce
qu'une macro peut bien sûr gérer.
- 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é à
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.
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
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
- 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.
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
- 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".
- On n'a pas le choix du libellé correspondant au sous-total, ce
qu'une macro peut bien sûr gérer.
- 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é à
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.
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
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
- 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.
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
- 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".
- On n'a pas le choix du libellé correspondant au sous-total, ce
qu'une macro peut bien sûr gérer.
- 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é à
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.
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
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
- 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.
Je ne pensais faire couler autant d'encre informatique
avec mon problème.
Je dirais de façon générale, que j'ai appris VB en
autodidacte, que je lis beaucoup ce forum, excelabo et
autres sites dédiés au VB.
En général, j'essaies vraiment de développer par moi même
mes macros, mais celle-là, j'avoues que je ne savais pas
du tout comment la prendre.
La macro proposée par Michel me convient tout à fait, elle
fait ce que j'attendais, à moi de la peaufiner pour
l'adapter à 100 % à mon fichier.
Merci à tous.
Franck-----Message d'origine-----
Bonjour,
Je ne suis qu'en partie d'accord avec toi.
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 estnécessaire ici.
D'autre part, le traitement n'est pas aussi simple que
cela : il y a l'habituelledifficulté des suppressions/insertions de lignes dans une
boucle : selon qu'uneligne a été supprimé (ou ajoutée) lors d'un passage dans
la boucle, la ligne àtraiter lors du passage suivant n'est pas la même que
s'il n'y avait pas eu desuppression (ou insertion). Pour résoudre cela, en cas de
suppression, on com-mence classiquement par la dernière ligne.
Ici le cas est + compliqué, car l'insertion se fait au-
dessus de la zone examinée.
Il est probable que pour une forte proportion des gens
qui utilisent VBA de façonoccasionnelle, il s'agit d'une procédure relativement
difficile.
C'est peut-être le cas pour Franck, puisqu'il parle de
défi.
Enfin, le forum s'adresse aussi à des débutants, y
compris des débutants qui veu-lent appliquer la technique que tu préconises, essayer
eux-mêmes. La demande deFranck me paraît un excellent exercice pour eux. ;-))
Voici une macro qui devrait te convenir, même si comme
dis Paul V., tu peux aussiexplorer les possibilités offertes par le menu "Données".
Sub SousTotaux()
Dim c As Range, Ref As Range, b As Boolean, i As Long, j
As Longb = False
Set Ref = Range("J2")
Do
Set c = Range("J2").Offset(i)
j = j + 1
If c <> c.Offset(-1) Or c.Offset(, 1) <>
c.Offset(-1, 1) Or c.Offset(, 2) <> c.Offset(-1, 2) Then
If b Then
c.EntireRow.Insert
i = i + 1
c.Offset(-1, 6).FormulaR1C1
= "=SUM(R[-1]C[-1]:R[" & -j & "]C[-1])"j = 0
Else
b = True
End If
Else
' j = j + 1
End If
i = i + 1
Loop Until IsEmpty(Ref.Offset(i))
c.Offset(1, 6).FormulaR1C1 = "=SUM(R[-1]C[-1]:R[" & -
(j + 1) & "]C[-1])"End SubBonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un
avis tout à faitpersonnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc
aussi simple, pourquoi nepas essayer de le faire par toi-même en t'aidant de
l'enregistreur de macroset de l'aide, puis de venir ici pour poser des
questions limitées etprécises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et
le plaisir del'apprentissage constructif . Les connaissances
acquises le serait de façondurable et le plaisir de t'aider des cerveaux
chevronnés serait décuplé dete voir faire un minimum d'effort au lieu d'attendre
que d'autres te machentle boulot.
Ceci étant, je le rappelle, un avis tout à fait
personnel et heureusementpour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J,
K, Lde ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de
cellesde la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la
sommedes valeurs en O du pavé précédent (entre deux
insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
Je ne pensais faire couler autant d'encre informatique
avec mon problème.
Je dirais de façon générale, que j'ai appris VB en
autodidacte, que je lis beaucoup ce forum, excelabo et
autres sites dédiés au VB.
En général, j'essaies vraiment de développer par moi même
mes macros, mais celle-là, j'avoues que je ne savais pas
du tout comment la prendre.
La macro proposée par Michel me convient tout à fait, elle
fait ce que j'attendais, à moi de la peaufiner pour
l'adapter à 100 % à mon fichier.
Merci à tous.
Franck
-----Message d'origine-----
Bonjour,
Je ne suis qu'en partie d'accord avec toi.
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.
D'autre part, le traitement n'est pas aussi simple que
cela : il y a l'habituelle
difficulté des suppressions/insertions de lignes dans une
boucle : selon qu'une
ligne a été supprimé (ou ajoutée) lors d'un passage dans
la boucle, la ligne à
traiter lors du passage suivant n'est pas la même que
s'il n'y avait pas eu de
suppression (ou insertion). Pour résoudre cela, en cas de
suppression, on com-
mence classiquement par la dernière ligne.
Ici le cas est + compliqué, car l'insertion se fait au-
dessus de la zone examinée.
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.
Enfin, le forum s'adresse aussi à des débutants, y
compris des débutants qui veu-
lent appliquer la technique que tu préconises, essayer
eux-mêmes. La demande de
Franck me paraît un excellent exercice pour eux. ;-))
Voici une macro qui devrait te convenir, même si comme
dis Paul V., tu peux aussi
explorer les possibilités offertes par le menu "Données".
Sub SousTotaux()
Dim c As Range, Ref As Range, b As Boolean, i As Long, j
As Long
b = False
Set Ref = Range("J2")
Do
Set c = Range("J2").Offset(i)
j = j + 1
If c <> c.Offset(-1) Or c.Offset(, 1) <>
c.Offset(-1, 1) Or c.Offset(, 2) <> c.Offset(-1, 2) Then
If b Then
c.EntireRow.Insert
i = i + 1
c.Offset(-1, 6).FormulaR1C1
= "=SUM(R[-1]C[-1]:R[" & -j & "]C[-1])"
j = 0
Else
b = True
End If
Else
' j = j + 1
End If
i = i + 1
Loop Until IsEmpty(Ref.Offset(i))
c.Offset(1, 6).FormulaR1C1 = "=SUM(R[-1]C[-1]:R[" & -
(j + 1) & "]C[-1])"
End Sub
Bonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un
avis tout à fait
personnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc
aussi simple, pourquoi ne
pas essayer de le faire par toi-même en t'aidant de
l'enregistreur de macros
et de l'aide, puis de venir ici pour poser des
questions limitées et
précises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et
le plaisir de
l'apprentissage constructif . Les connaissances
acquises le serait de façon
durable et le plaisir de t'aider des cerveaux
chevronnés serait décuplé de
te voir faire un minimum d'effort au lieu d'attendre
que d'autres te machent
le boulot.
Ceci étant, je le rappelle, un avis tout à fait
personnel et heureusement
pour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:
Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J,
K, L
de ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de
celles
de la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la
somme
des valeurs en O du pavé précédent (entre deux
insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
Je ne pensais faire couler autant d'encre informatique
avec mon problème.
Je dirais de façon générale, que j'ai appris VB en
autodidacte, que je lis beaucoup ce forum, excelabo et
autres sites dédiés au VB.
En général, j'essaies vraiment de développer par moi même
mes macros, mais celle-là, j'avoues que je ne savais pas
du tout comment la prendre.
La macro proposée par Michel me convient tout à fait, elle
fait ce que j'attendais, à moi de la peaufiner pour
l'adapter à 100 % à mon fichier.
Merci à tous.
Franck-----Message d'origine-----
Bonjour,
Je ne suis qu'en partie d'accord avec toi.
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 estnécessaire ici.
D'autre part, le traitement n'est pas aussi simple que
cela : il y a l'habituelledifficulté des suppressions/insertions de lignes dans une
boucle : selon qu'uneligne a été supprimé (ou ajoutée) lors d'un passage dans
la boucle, la ligne àtraiter lors du passage suivant n'est pas la même que
s'il n'y avait pas eu desuppression (ou insertion). Pour résoudre cela, en cas de
suppression, on com-mence classiquement par la dernière ligne.
Ici le cas est + compliqué, car l'insertion se fait au-
dessus de la zone examinée.
Il est probable que pour une forte proportion des gens
qui utilisent VBA de façonoccasionnelle, il s'agit d'une procédure relativement
difficile.
C'est peut-être le cas pour Franck, puisqu'il parle de
défi.
Enfin, le forum s'adresse aussi à des débutants, y
compris des débutants qui veu-lent appliquer la technique que tu préconises, essayer
eux-mêmes. La demande deFranck me paraît un excellent exercice pour eux. ;-))
Voici une macro qui devrait te convenir, même si comme
dis Paul V., tu peux aussiexplorer les possibilités offertes par le menu "Données".
Sub SousTotaux()
Dim c As Range, Ref As Range, b As Boolean, i As Long, j
As Longb = False
Set Ref = Range("J2")
Do
Set c = Range("J2").Offset(i)
j = j + 1
If c <> c.Offset(-1) Or c.Offset(, 1) <>
c.Offset(-1, 1) Or c.Offset(, 2) <> c.Offset(-1, 2) Then
If b Then
c.EntireRow.Insert
i = i + 1
c.Offset(-1, 6).FormulaR1C1
= "=SUM(R[-1]C[-1]:R[" & -j & "]C[-1])"j = 0
Else
b = True
End If
Else
' j = j + 1
End If
i = i + 1
Loop Until IsEmpty(Ref.Offset(i))
c.Offset(1, 6).FormulaR1C1 = "=SUM(R[-1]C[-1]:R[" & -
(j + 1) & "]C[-1])"End SubBonjour,
Oui c'est très clair.
Oui, je connais le code.
Mais je vais profiter de ta question pour donner ici un
avis tout à faitpersonnel qui ne concerne pas que toi.
A la place de demander à d'autres de faire un truc
aussi simple, pourquoi nepas essayer de le faire par toi-même en t'aidant de
l'enregistreur de macroset de l'aide, puis de venir ici pour poser des
questions limitées etprécises lorsque tu rencontres une difficulté?
Cela t'apporterais la satisfaction de la découverte et
le plaisir del'apprentissage constructif . Les connaissances
acquises le serait de façondurable et le plaisir de t'aider des cerveaux
chevronnés serait décuplé dete voir faire un minimum d'effort au lieu d'attendre
que d'autres te machentle boulot.
Ceci étant, je le rappelle, un avis tout à fait
personnel et heureusementpour toi, pas partagé de tous ;-)
Paul V.
Franck wrote:Bonjour,
Je fais appel aux cerveaux chevronnés du MPFE
Je voudrais concevoir une macro exécutant la tache
suivante.
Balayer ligne par ligne les valeurs des colonnes J,
K, Lde ma feuille.
Dès qu'une valeur (des trois colonnes) diffère de
cellesde la ligne précédente, il faut insérer une ligne au
dessus de la ligne différente.
En cellule P de la ligne insérée il faut faire la
sommedes valeurs en O du pavé précédent (entre deux
insertions).
Est-ce clair ?
Est ce que quelqu'un a une idée du code ?
Merci d'avance
Franck
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.