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

inserer des lignes complètes après une valeur de cellule fixe

10 réponses
Avatar
david gillardin
bonjour,

je cherche une formule ou macro (PS je suis un novice) pour inserer des
lignes complètes en dessous d'une ligne en copiant certaines valeur ou
formule de la igne du dessus.

je m'expliue :
c'est un tableau de suivi de volume, par an et par mois :
A B C D
E
1 19469 PORTION VIVANEAU
2 19469 total 2006
3 19469 total 2007 160 132 173
4 19469 plan 07 200 150 200

je veux inserer une ligne entre "total 2007" et "plan 07", recopier la
valeur de la de la cellule de la colonne A de la ligne "total 2007" (ici
19469) dans cette nouvelle ligne et nommer la valeur de la cellule de la
colonne B "total 2008" dans cette ligne inserée.
un dessin valant mieux qu'un long discours:
igne du dessus.

je m'expliue :
c'est un tableau de suivi de volume, par an et par mois :
A B C D
E
1 19469 PORTION VIVANEAU
2 19469 total 2006
3 19469 total 2007 160 132 173
4 19469 total 2008
5 19469 plan 07 200 150 200

voila ce à quoi je voudrais que cela ressemble après l'application de la
formule/macro:

d'avance Merci,

David

10 réponses

Avatar
Daniel.C
Bonjour.
La macro suivante recherche la dernière cellule contenant le mot "total"
dans la colonne B et incrémente le numéro de l'année :

Sub test()
Dim ligne As Long
ligne = [B:B].Find("total", [B65536], , xlPart, , xlPrevious).Row
Rows(ligne + 1).Insert
Cells(ligne + 1, 1) = Cells(ligne, 1)
Cells(ligne + 1, 2) = "total " & Right(Cells(ligne, 2), 4) + 1
End Sub

Cordialement.
Daniel
"david gillardin" a écrit dans le
message de news:
bonjour,

je cherche une formule ou macro (PS je suis un novice) pour inserer des
lignes complètes en dessous d'une ligne en copiant certaines valeur ou
formule de la igne du dessus.

je m'expliue :
c'est un tableau de suivi de volume, par an et par mois :
A B C D
E
1 19469 PORTION VIVANEAU
2 19469 total 2006
3 19469 total 2007 160 132 173
4 19469 plan 07 200 150 200

je veux inserer une ligne entre "total 2007" et "plan 07", recopier la
valeur de la de la cellule de la colonne A de la ligne "total 2007" (ici
19469) dans cette nouvelle ligne et nommer la valeur de la cellule de la
colonne B "total 2008" dans cette ligne inserée.
un dessin valant mieux qu'un long discours:
igne du dessus.

je m'expliue :
c'est un tableau de suivi de volume, par an et par mois :
A B C D
E
1 19469 PORTION VIVANEAU
2 19469 total 2006
3 19469 total 2007 160 132 173
4 19469 total 2008
5 19469 plan 07 200 150 200

voila ce à quoi je voudrais que cela ressemble après l'application de la
formule/macro:

d'avance Merci,

David


Avatar
david gillardin
bonjour Daniel ,

je te remercie de ton aide mais mon cas est plus complexe :
j'ai plusieurs articles dans mon tableau, donc je dois inserer ma ligne
après "total 2007" pour chacun des articles.
voir ci dessous :
19 104 CRIQUE CAMPAGNARD
19 104 total 01 1 14 782 1 489 1 413
19 104 total 02 1 528 1 375 2 496 8 706 1 187
19 104 total 03 1 302 1 132 2 792 7 839 1 144
19 104 total 2004 7 468 1 087 1 835 1 882 1 619
19 104 total 2005 7 974 1 155 1 788 1 868 1 710
19 104 total 2006 6 635 1 470 2 068 1 732 1 743
19 104 total 2007 7 338 1 118 1 582 1 468 1 592
19 104 plan 07 1 600 1 150 1 600 1 500 1 600
19 107 BARQUETTE DU PECHEUR
19 107 total 01 27 1 914 1 370 1 802
19 107 total 02 885 773 2 016 831 705
19 107 total 03 510 2 577 1 626 742 534
19 107 total 2004 587 650 2 180 711 488
19 107 total 2005 520 495 558 518 2 363
19 107 total 2006 533 728 605 400 380
19 107 total 2007 328 638 1 207 1 180 369
19 107 plan 07 350 700 650 650 400

d'autre part, je ne sais pas comment utiliser tes lignes de programme. Dois
je ouvrir une session visual basic et recopier texto les lignes de programme
ou ouvrir directement une macro ?

merci de ton aide,

David


Bonjour.
La macro suivante recherche la dernière cellule contenant le mot "total"
dans la colonne B et incrémente le numéro de l'année :

Sub test()
Dim ligne As Long
ligne = [B:B].Find("total", [B65536], , xlPart, , xlPrevious).Row
Rows(ligne + 1).Insert
Cells(ligne + 1, 1) = Cells(ligne, 1)
Cells(ligne + 1, 2) = "total " & Right(Cells(ligne, 2), 4) + 1
End Sub

Cordialement.
Daniel
"david gillardin" a écrit dans le
message de news:
bonjour,

je cherche une formule ou macro (PS je suis un novice) pour inserer des
lignes complètes en dessous d'une ligne en copiant certaines valeur ou
formule de la igne du dessus.

je m'expliue :
c'est un tableau de suivi de volume, par an et par mois :
A B C D
E
1 19469 PORTION VIVANEAU
2 19469 total 2006
3 19469 total 2007 160 132 173
4 19469 plan 07 200 150 200

je veux inserer une ligne entre "total 2007" et "plan 07", recopier la
valeur de la de la cellule de la colonne A de la ligne "total 2007" (ici
19469) dans cette nouvelle ligne et nommer la valeur de la cellule de la
colonne B "total 2008" dans cette ligne inserée.
un dessin valant mieux qu'un long discours:
igne du dessus.

je m'expliue :
c'est un tableau de suivi de volume, par an et par mois :
A B C D
E
1 19469 PORTION VIVANEAU
2 19469 total 2006
3 19469 total 2007 160 132 173
4 19469 total 2008
5 19469 plan 07 200 150 200

voila ce à quoi je voudrais que cela ressemble après l'application de la
formule/macro:

d'avance Merci,

David







Avatar
Daniel.C
Le code suivant insère une ligne chaque fois qu'il rencontre "total 2006" en
colonne B.
Pour mettre le code dans ton classeur, menu : Outils / Macro, Visual Basic
Editor. Dans la fenêtre qui s'oouvre, fais un clic droit là où il y a le nom
de ton classeur (partie gauche) et clique sur Insertion et Module. Colle
ensuite le code dans la partie droite. Pour l'exécuter, dans Excel, Outils /
Macro / macros, choisis test et exécuter.

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2006" Then
Rows(c.Row + 1).Insert
Cells(c.Row + 1, 1) = Cells(c.Row, 1)
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

Daniel
"david gillardin" a écrit dans le
message de news:
bonjour Daniel ,

je te remercie de ton aide mais mon cas est plus complexe :
j'ai plusieurs articles dans mon tableau, donc je dois inserer ma ligne
après "total 2007" pour chacun des articles.
voir ci dessous :
19 104 CRIQUE CAMPAGNARD
19 104 total 01 1 14 782 1 489 1 413
19 104 total 02 1 528 1 375 2 496 8 706 1 187
19 104 total 03 1 302 1 132 2 792 7 839 1 144
19 104 total 2004 7 468 1 087 1 835 1 882 1 619
19 104 total 2005 7 974 1 155 1 788 1 868 1 710
19 104 total 2006 6 635 1 470 2 068 1 732 1 743
19 104 total 2007 7 338 1 118 1 582 1 468 1 592
19 104 plan 07 1 600 1 150 1 600 1 500 1 600
19 107 BARQUETTE DU PECHEUR
19 107 total 01 27 1 914 1 370 1 802
19 107 total 02 885 773 2 016 831 705
19 107 total 03 510 2 577 1 626 742 534
19 107 total 2004 587 650 2 180 711 488
19 107 total 2005 520 495 558 518 2 363
19 107 total 2006 533 728 605 400 380
19 107 total 2007 328 638 1 207 1 180 369
19 107 plan 07 350 700 650 650 400

d'autre part, je ne sais pas comment utiliser tes lignes de programme.
Dois
je ouvrir une session visual basic et recopier texto les lignes de
programme
ou ouvrir directement une macro ?

merci de ton aide,

David


Bonjour.
La macro suivante recherche la dernière cellule contenant le mot "total"
dans la colonne B et incrémente le numéro de l'année :

Sub test()
Dim ligne As Long
ligne = [B:B].Find("total", [B65536], , xlPart, , xlPrevious).Row
Rows(ligne + 1).Insert
Cells(ligne + 1, 1) = Cells(ligne, 1)
Cells(ligne + 1, 2) = "total " & Right(Cells(ligne, 2), 4) + 1
End Sub

Cordialement.
Daniel
"david gillardin" a écrit dans
le
message de news:
bonjour,

je cherche une formule ou macro (PS je suis un novice) pour inserer des
lignes complètes en dessous d'une ligne en copiant certaines valeur ou
formule de la igne du dessus.

je m'expliue :
c'est un tableau de suivi de volume, par an et par mois :
A B C
D
E
1 19469 PORTION VIVANEAU
2 19469 total 2006
3 19469 total 2007 160 132 173
4 19469 plan 07 200 150 200

je veux inserer une ligne entre "total 2007" et "plan 07", recopier la
valeur de la de la cellule de la colonne A de la ligne "total 2007"
(ici
19469) dans cette nouvelle ligne et nommer la valeur de la cellule de
la
colonne B "total 2008" dans cette ligne inserée.
un dessin valant mieux qu'un long discours:
igne du dessus.

je m'expliue :
c'est un tableau de suivi de volume, par an et par mois :
A B C
D
E
1 19469 PORTION VIVANEAU
2 19469 total 2006
3 19469 total 2007 160 132 173
4 19469 total 2008
5 19469 plan 07 200 150 200

voila ce à quoi je voudrais que cela ressemble après l'application de
la
formule/macro:

d'avance Merci,

David









Avatar
david gillardin
Merci Daniel,

j'ai réussi à faire fonctionner la macro et ça marche.

Mais car il y a un mais, la ligne insérée copie la mise en forme de la ligne
supérieure (en fait des fonds de couleur et des encadrés de cellules qui
m'aident à indiquer des perturbations dans mes ventes) et je n'en ai pas
besoin aux même endroits pour cette année.
comment peut on faire pour inserer une ligne sans ses éléments?

D'autres part la commande "Cells(c.Row + 1, 1) = Cells(c.Row, 1)" permet de
copier la valeur d'une cellule mais pas une formule. Peux tu m'indiquer quel
code permet de copier une formule?

je te remercie par avance,

cordialement,

David



Le code suivant insère une ligne chaque fois qu'il rencontre "total 2006" en
colonne B.
Pour mettre le code dans ton classeur, menu : Outils / Macro, Visual Basic
Editor. Dans la fenêtre qui s'oouvre, fais un clic droit là où il y a le nom
de ton classeur (partie gauche) et clique sur Insertion et Module. Colle
ensuite le code dans la partie droite. Pour l'exécuter, dans Excel, Outils /
Macro / macros, choisis test et exécuter.

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2006" Then
Rows(c.Row + 1).Insert
Cells(c.Row + 1, 1) = Cells(c.Row, 1)
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

Daniel


Avatar
Daniel.C
Bonjour.
C'est la faute à Excel, qui se croit autorisé à copier les formats (regarde
dans Outils / Options / Modifications, tu as coché "Etendre les formules et
formats....")
Voici le code modifié (suivant ta version, il faudra peut-être changer
"xlpasteformulas" en "xlformulas") :

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2006" Then
Rows(c.Row + 1).Insert
Rows(c.Row + 1).Clear
Cells(c.Row, 1).Copy
Cells(c.Row + 1, 1).PasteSpecial xlPasteFormulas
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

Daniel
"david gillardin" a écrit dans le
message de news:
Merci Daniel,

j'ai réussi à faire fonctionner la macro et ça marche.

Mais car il y a un mais, la ligne insérée copie la mise en forme de la
ligne
supérieure (en fait des fonds de couleur et des encadrés de cellules qui
m'aident à indiquer des perturbations dans mes ventes) et je n'en ai pas
besoin aux même endroits pour cette année.
comment peut on faire pour inserer une ligne sans ses éléments?

D'autres part la commande "Cells(c.Row + 1, 1) = Cells(c.Row, 1)" permet
de
copier la valeur d'une cellule mais pas une formule. Peux tu m'indiquer
quel
code permet de copier une formule?

je te remercie par avance,

cordialement,

David



Le code suivant insère une ligne chaque fois qu'il rencontre "total 2006"
en
colonne B.
Pour mettre le code dans ton classeur, menu : Outils / Macro, Visual
Basic
Editor. Dans la fenêtre qui s'oouvre, fais un clic droit là où il y a le
nom
de ton classeur (partie gauche) et clique sur Insertion et Module. Colle
ensuite le code dans la partie droite. Pour l'exécuter, dans Excel,
Outils /
Macro / macros, choisis test et exécuter.

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2006" Then
Rows(c.Row + 1).Insert
Cells(c.Row + 1, 1) = Cells(c.Row, 1)
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

Daniel





Avatar
david gillardin
bonjour,

tout cela est diabolique;

maintenant toute la mise en forme a disparu. En fait je voulais juste
effacer les fonds et les bordures des cellules correspondantes aux colonnes C
à N. alors j'ai modifié les lignes de codes comme suit :

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2007" Then
Rows(c.Row + 1).Insert
Cells(c.Row + 1, 1) = Cells(c.Row, 1)
Cells(c.Row + 1, 3) = Cells(c.Row, 19)
Cells(c.Row + 1, 4) = Cells(c.Row, 19)
Cells(c.Row + 1, 5) = Cells(c.Row, 19)
Cells(c.Row + 1, 6) = Cells(c.Row, 19)
Cells(c.Row + 1, 7) = Cells(c.Row, 19)
Cells(c.Row + 1, 8) = Cells(c.Row, 19)
Cells(c.Row + 1, 9) = Cells(c.Row, 19)
Cells(c.Row + 1, 10) = Cells(c.Row, 19)
Cells(c.Row + 1, 11) = Cells(c.Row, 19)
Cells(c.Row + 1, 12) = Cells(c.Row, 19)
Cells(c.Row + 1, 13) = Cells(c.Row, 19)
Cells(c.Row + 1, 14) = Cells(c.Row, 19)
Cells(c.Row + 1, 15) = Cells(c.Row, 19)
Cells(c.Row + 1, 16) = Cells(c.Row, 19)
Cells(c.Row, 18).Copy
Cells(c.Row + 1, 18).PasteSpecial xlPasteFormulas
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

bon d'accord il doit y avoir plus court ;-) pour copier une cellule avec la
bonne police, taille, etc ... dans la cellule concernée.

en faisant ainsi je conserve ma mise en page et je pensais effacer la mise
en page des cellules ou se faisait les mauvaises copies de style.
Mais non car encore une fois il doit y avoir une formule pour copier le
style et ça n'est pas celle-ci.
j'ai beau chercher sur le net je ne trouve pas !!

merci encore pour ton aide,

cordialement,


David




Bonjour.
C'est la faute à Excel, qui se croit autorisé à copier les formats (regarde
dans Outils / Options / Modifications, tu as coché "Etendre les formules et
formats....")
Voici le code modifié (suivant ta version, il faudra peut-être changer
"xlpasteformulas" en "xlformulas") :

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2006" Then
Rows(c.Row + 1).Insert
Rows(c.Row + 1).Clear
Cells(c.Row, 1).Copy
Cells(c.Row + 1, 1).PasteSpecial xlPasteFormulas
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

Daniel


Avatar
Daniel.C
Bonjour.
Cells(c.Row, 1).Copy
Cells(c.Row + 1, 1).PasteSpecial xlPasteFormats
Tu peux copier et coller une plage de celllules.
Daniel
"david gillardin" a écrit dans le
message de news:
bonjour,

tout cela est diabolique;

maintenant toute la mise en forme a disparu. En fait je voulais juste
effacer les fonds et les bordures des cellules correspondantes aux
colonnes C
à N. alors j'ai modifié les lignes de codes comme suit :

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2007" Then
Rows(c.Row + 1).Insert
Cells(c.Row + 1, 1) = Cells(c.Row, 1)
Cells(c.Row + 1, 3) = Cells(c.Row, 19)
Cells(c.Row + 1, 4) = Cells(c.Row, 19)
Cells(c.Row + 1, 5) = Cells(c.Row, 19)
Cells(c.Row + 1, 6) = Cells(c.Row, 19)
Cells(c.Row + 1, 7) = Cells(c.Row, 19)
Cells(c.Row + 1, 8) = Cells(c.Row, 19)
Cells(c.Row + 1, 9) = Cells(c.Row, 19)
Cells(c.Row + 1, 10) = Cells(c.Row, 19)
Cells(c.Row + 1, 11) = Cells(c.Row, 19)
Cells(c.Row + 1, 12) = Cells(c.Row, 19)
Cells(c.Row + 1, 13) = Cells(c.Row, 19)
Cells(c.Row + 1, 14) = Cells(c.Row, 19)
Cells(c.Row + 1, 15) = Cells(c.Row, 19)
Cells(c.Row + 1, 16) = Cells(c.Row, 19)
Cells(c.Row, 18).Copy
Cells(c.Row + 1, 18).PasteSpecial xlPasteFormulas
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

bon d'accord il doit y avoir plus court ;-) pour copier une cellule avec
la
bonne police, taille, etc ... dans la cellule concernée.

en faisant ainsi je conserve ma mise en page et je pensais effacer la mise
en page des cellules ou se faisait les mauvaises copies de style.
Mais non car encore une fois il doit y avoir une formule pour copier le
style et ça n'est pas celle-ci.
j'ai beau chercher sur le net je ne trouve pas !!

merci encore pour ton aide,

cordialement,


David




Bonjour.
C'est la faute à Excel, qui se croit autorisé à copier les formats
(regarde
dans Outils / Options / Modifications, tu as coché "Etendre les formules
et
formats....")
Voici le code modifié (suivant ta version, il faudra peut-être changer
"xlpasteformulas" en "xlformulas") :

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2006" Then
Rows(c.Row + 1).Insert
Rows(c.Row + 1).Clear
Cells(c.Row, 1).Copy
Cells(c.Row + 1, 1).PasteSpecial xlPasteFormulas
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

Daniel





Avatar
david gillardin
bonjour Daniel,

bien alors comment faire pour copier la mise en page d'une cellule sur la
plage de cellule C à N de c.row +1.

Cells(c.Row, 19).Copy
Cells(c.Row + 1, 3:16).pastespecial xlpasteformats
mais la formule 3:16 ne fonctionne pas pour définir une plage de cellule;

merci par avance et bon week end,


David


Bonjour.
Cells(c.Row, 1).Copy
Cells(c.Row + 1, 1).PasteSpecial xlPasteFormats
Tu peux copier et coller une plage de celllules.
Daniel
"david gillardin" a écrit dans le
message de news:
bonjour,

tout cela est diabolique;

maintenant toute la mise en forme a disparu. En fait je voulais juste
effacer les fonds et les bordures des cellules correspondantes aux
colonnes C
à N. alors j'ai modifié les lignes de codes comme suit :

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2007" Then
Rows(c.Row + 1).Insert
Cells(c.Row + 1, 1) = Cells(c.Row, 1)
Cells(c.Row + 1, 3) = Cells(c.Row, 19)
Cells(c.Row + 1, 4) = Cells(c.Row, 19)
Cells(c.Row + 1, 5) = Cells(c.Row, 19)
Cells(c.Row + 1, 6) = Cells(c.Row, 19)
Cells(c.Row + 1, 7) = Cells(c.Row, 19)
Cells(c.Row + 1, 8) = Cells(c.Row, 19)
Cells(c.Row + 1, 9) = Cells(c.Row, 19)
Cells(c.Row + 1, 10) = Cells(c.Row, 19)
Cells(c.Row + 1, 11) = Cells(c.Row, 19)
Cells(c.Row + 1, 12) = Cells(c.Row, 19)
Cells(c.Row + 1, 13) = Cells(c.Row, 19)
Cells(c.Row + 1, 14) = Cells(c.Row, 19)
Cells(c.Row + 1, 15) = Cells(c.Row, 19)
Cells(c.Row + 1, 16) = Cells(c.Row, 19)
Cells(c.Row, 18).Copy
Cells(c.Row + 1, 18).PasteSpecial xlPasteFormulas
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

bon d'accord il doit y avoir plus court ;-) pour copier une cellule avec
la
bonne police, taille, etc ... dans la cellule concernée.

en faisant ainsi je conserve ma mise en page et je pensais effacer la mise
en page des cellules ou se faisait les mauvaises copies de style.
Mais non car encore une fois il doit y avoir une formule pour copier le
style et ça n'est pas celle-ci.
j'ai beau chercher sur le net je ne trouve pas !!

merci encore pour ton aide,

cordialement,


David




Bonjour.
C'est la faute à Excel, qui se croit autorisé à copier les formats
(regarde
dans Outils / Options / Modifications, tu as coché "Etendre les formules
et
formats....")
Voici le code modifié (suivant ta version, il faudra peut-être changer
"xlpasteformulas" en "xlformulas") :

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2006" Then
Rows(c.Row + 1).Insert
Rows(c.Row + 1).Clear
Cells(c.Row, 1).Copy
Cells(c.Row + 1, 1).PasteSpecial xlPasteFormulas
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

Daniel










Avatar
Daniel.C
Bonjour.
Range("C" & c.Row + 1 & ":N" & c.Row + 1).PasteSpecial xlPasteFormats
ou encore :
Cells(c.Row + 1, 3).Resize(, 12).PasteSpecial xlPasteFormats
Range(Cells(c.Row + 1, 3), Cells(c.Row + 1, 14)).PasteSpecial xlPasteFormats
Daniel

"david gillardin" a écrit dans le
message de news:
bonjour Daniel,

bien alors comment faire pour copier la mise en page d'une cellule sur la
plage de cellule C à N de c.row +1.

Cells(c.Row, 19).Copy
Cells(c.Row + 1, 3:16).pastespecial xlpasteformats
mais la formule 3:16 ne fonctionne pas pour définir une plage de cellule;

merci par avance et bon week end,


David


Bonjour.
Cells(c.Row, 1).Copy
Cells(c.Row + 1, 1).PasteSpecial xlPasteFormats
Tu peux copier et coller une plage de celllules.
Daniel
"david gillardin" a écrit dans
le
message de news:
bonjour,

tout cela est diabolique;

maintenant toute la mise en forme a disparu. En fait je voulais juste
effacer les fonds et les bordures des cellules correspondantes aux
colonnes C
à N. alors j'ai modifié les lignes de codes comme suit :

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2007" Then
Rows(c.Row + 1).Insert
Cells(c.Row + 1, 1) = Cells(c.Row, 1)
Cells(c.Row + 1, 3) = Cells(c.Row, 19)
Cells(c.Row + 1, 4) = Cells(c.Row, 19)
Cells(c.Row + 1, 5) = Cells(c.Row, 19)
Cells(c.Row + 1, 6) = Cells(c.Row, 19)
Cells(c.Row + 1, 7) = Cells(c.Row, 19)
Cells(c.Row + 1, 8) = Cells(c.Row, 19)
Cells(c.Row + 1, 9) = Cells(c.Row, 19)
Cells(c.Row + 1, 10) = Cells(c.Row, 19)
Cells(c.Row + 1, 11) = Cells(c.Row, 19)
Cells(c.Row + 1, 12) = Cells(c.Row, 19)
Cells(c.Row + 1, 13) = Cells(c.Row, 19)
Cells(c.Row + 1, 14) = Cells(c.Row, 19)
Cells(c.Row + 1, 15) = Cells(c.Row, 19)
Cells(c.Row + 1, 16) = Cells(c.Row, 19)
Cells(c.Row, 18).Copy
Cells(c.Row + 1, 18).PasteSpecial xlPasteFormulas
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

bon d'accord il doit y avoir plus court ;-) pour copier une cellule
avec
la
bonne police, taille, etc ... dans la cellule concernée.

en faisant ainsi je conserve ma mise en page et je pensais effacer la
mise
en page des cellules ou se faisait les mauvaises copies de style.
Mais non car encore une fois il doit y avoir une formule pour copier le
style et ça n'est pas celle-ci.
j'ai beau chercher sur le net je ne trouve pas !!

merci encore pour ton aide,

cordialement,


David




Bonjour.
C'est la faute à Excel, qui se croit autorisé à copier les formats
(regarde
dans Outils / Options / Modifications, tu as coché "Etendre les
formules
et
formats....")
Voici le code modifié (suivant ta version, il faudra peut-être changer
"xlpasteformulas" en "xlformulas") :

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2006" Then
Rows(c.Row + 1).Insert
Rows(c.Row + 1).Clear
Cells(c.Row, 1).Copy
Cells(c.Row + 1, 1).PasteSpecial xlPasteFormulas
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

Daniel












Avatar
david gillardin
super !


merci encore et à une prochaine fois.

cordialement,

David


Bonjour.
Range("C" & c.Row + 1 & ":N" & c.Row + 1).PasteSpecial xlPasteFormats
ou encore :
Cells(c.Row + 1, 3).Resize(, 12).PasteSpecial xlPasteFormats
Range(Cells(c.Row + 1, 3), Cells(c.Row + 1, 14)).PasteSpecial xlPasteFormats
Daniel

"david gillardin" a écrit dans le
message de news:
bonjour Daniel,

bien alors comment faire pour copier la mise en page d'une cellule sur la
plage de cellule C à N de c.row +1.

Cells(c.Row, 19).Copy
Cells(c.Row + 1, 3:16).pastespecial xlpasteformats
mais la formule 3:16 ne fonctionne pas pour définir une plage de cellule;

merci par avance et bon week end,


David


Bonjour.
Cells(c.Row, 1).Copy
Cells(c.Row + 1, 1).PasteSpecial xlPasteFormats
Tu peux copier et coller une plage de celllules.
Daniel
"david gillardin" a écrit dans
le
message de news:
bonjour,

tout cela est diabolique;

maintenant toute la mise en forme a disparu. En fait je voulais juste
effacer les fonds et les bordures des cellules correspondantes aux
colonnes C
à N. alors j'ai modifié les lignes de codes comme suit :

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2007" Then
Rows(c.Row + 1).Insert
Cells(c.Row + 1, 1) = Cells(c.Row, 1)
Cells(c.Row + 1, 3) = Cells(c.Row, 19)
Cells(c.Row + 1, 4) = Cells(c.Row, 19)
Cells(c.Row + 1, 5) = Cells(c.Row, 19)
Cells(c.Row + 1, 6) = Cells(c.Row, 19)
Cells(c.Row + 1, 7) = Cells(c.Row, 19)
Cells(c.Row + 1, 8) = Cells(c.Row, 19)
Cells(c.Row + 1, 9) = Cells(c.Row, 19)
Cells(c.Row + 1, 10) = Cells(c.Row, 19)
Cells(c.Row + 1, 11) = Cells(c.Row, 19)
Cells(c.Row + 1, 12) = Cells(c.Row, 19)
Cells(c.Row + 1, 13) = Cells(c.Row, 19)
Cells(c.Row + 1, 14) = Cells(c.Row, 19)
Cells(c.Row + 1, 15) = Cells(c.Row, 19)
Cells(c.Row + 1, 16) = Cells(c.Row, 19)
Cells(c.Row, 18).Copy
Cells(c.Row + 1, 18).PasteSpecial xlPasteFormulas
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

bon d'accord il doit y avoir plus court ;-) pour copier une cellule
avec
la
bonne police, taille, etc ... dans la cellule concernée.

en faisant ainsi je conserve ma mise en page et je pensais effacer la
mise
en page des cellules ou se faisait les mauvaises copies de style.
Mais non car encore une fois il doit y avoir une formule pour copier le
style et ça n'est pas celle-ci.
j'ai beau chercher sur le net je ne trouve pas !!

merci encore pour ton aide,

cordialement,


David




Bonjour.
C'est la faute à Excel, qui se croit autorisé à copier les formats
(regarde
dans Outils / Options / Modifications, tu as coché "Etendre les
formules
et
formats....")
Voici le code modifié (suivant ta version, il faudra peut-être changer
"xlpasteformulas" en "xlformulas") :

Sub test()
Dim c As Range
For Each c In Range("B1", Range("B65536").End(xlUp))
If c = "total 2006" Then
Rows(c.Row + 1).Insert
Rows(c.Row + 1).Clear
Cells(c.Row, 1).Copy
Cells(c.Row + 1, 1).PasteSpecial xlPasteFormulas
Cells(c.Row + 1, 2) = "total " & Right(Cells(c.Row, 2), 4) + 1
End If
Next c
End Sub

Daniel