Bjr,
J'ai un probleme sur lequel je bute (et je suis polie)=20
depuis hier.
A partir d'une feuille ou j'ai genere des sous-totaux je=20
veux pour chaque ligne sous totale generer un tableau en=20
colonne. Pb je ne connais pas le nombre de rupture. Donc=20
j'ai imagin=E9 queje pouvais creer 3 colonnes en les=20
recopiant.
Le resultat du script ci-dessous donne rien en terme de=20
recopie, les formules ne sont pas reconduites !!!
Help me avant que je saute par la fenetre (je suis au=20
1er ...)
Merci
Wi =3D 1
WNAg =3D 5
On Err GoTo Terr
With Ws
Do Until Left(.Cells(Wi, 1), 5) =3D "Total"
If Left(.Cells(Wi, 2), 5) =3D "Somme" Then
WNAg =3D WNAg + 3
Workbooks("doc17.xls").Sheets("Agences").Activate
Workbooks("doc17.xls").Sheets("Agences").Range
("E1:G17").Select
'Application.CutCopyMode =3D False
Workbooks("doc17.xls").Sheets
("Agences").Selection.Copy
Workbooks("doc17.xls").Sheets("Agences").Range
(Cells(17, WNAg + 2), Cells(1, WNAg)).Select
ActiveSheet.Paste
Application.CutCopyMode =3D False
WLen =3D Len(.Cells(Wi, 2))
WlAg =3D Right(.Cells(Wi, 2), WLen - 6)
Workbooks("doc17.xls").Sheets("Agences").Cells(1,=20
WNAg) =3D WlAg
=20
Wr =3D WNAg
WSi =3D Wi
'Debug.Print Workbooks("doc17.xls").Sheets
("Agences").ActiveCell.Name
Charg
End If
If Left(.Cells(Wi, 1), 5) =3D "Somme" Then
Wr =3D 5
WSi =3D Wi
Charg
End If
Wi =3D Wi + 1
Loop
=20
End With
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Lydya
Bonjour Mireille, Il ne faut pas craquer ;-) AV a posté il y a quelques jours ce code qui récupère les lignes des sous-totaux (Merci AV !)... -- Sub Sous_Ttx() Application.ScreenUpdating = False ActiveSheet.Outline.ShowLevels RowLevels:=2 Dim plg As Range Set plg = Range("A2:D" & [A65536].End(3).Row - 1).SpecialCells(xlCellTypeConstants, 23). _ SpecialCells(xlCellTypeVisible) For Each c In plg Cells(c.Row, "E") = "fifi" Next ActiveSheet.Outline.ShowLevels RowLevels:=3 End Sub -- Il suffit, dans ton cas, de modifier la boucle For Each... et d'y ajouter le "copier / collage special: valeurs, transposé" pour copier/coller toutes les lignes des sous-totaux transposées en colonnes, par exemple sur une deuxième feuille (Range à adapter en fonction de tes données) : -- Sub Sous_TtxAvecCopie() Application.ScreenUpdating = False ActiveSheet.Outline.ShowLevels RowLevels:=2 Dim plg As Range Dim col As Integer Dim c As Range Set plg = Range("A2:D" & [A65536].End(3).Row - 1) _ .SpecialCells(xlCellTypeConstants, 23). _ SpecialCells(xlCellTypeVisible) col = 1 For Each c In plg Range(Cells(c.Row, "A"), Cells(c.Row, "D")).Copy Sheets(2).Cells(1, col).PasteSpecial Paste:=xlValues, Transpose:=True col = col + 1 Next ActiveSheet.Outline.ShowLevels RowLevels:=3 End Sub -- Bonne journée ! Lydya
"Mireille qui craque" a écrit dans le message de news:06eb01c39474$bf9d9a80$ Bjr, J'ai un probleme sur lequel je bute (et je suis polie) depuis hier. A partir d'une feuille ou j'ai genere des sous-totaux je veux pour chaque ligne sous totale generer un tableau en colonne. Pb je ne connais pas le nombre de rupture. Donc j'ai imaginé queje pouvais creer 3 colonnes en les recopiant. Le resultat du script ci-dessous donne rien en terme de recopie, les formules ne sont pas reconduites !!! Help me avant que je saute par la fenetre (je suis au 1er ...) Merci
Wi = 1 WNAg = 5 On Err GoTo Terr With Ws Do Until Left(.Cells(Wi, 1), 5) = "Total" If Left(.Cells(Wi, 2), 5) = "Somme" Then WNAg = WNAg + 3 Workbooks("doc17.xls").Sheets("Agences").Activate Workbooks("doc17.xls").Sheets("Agences").Range ("E1:G17").Select 'Application.CutCopyMode = False Workbooks("doc17.xls").Sheets ("Agences").Selection.Copy Workbooks("doc17.xls").Sheets("Agences").Range (Cells(17, WNAg + 2), Cells(1, WNAg)).Select ActiveSheet.Paste Application.CutCopyMode = False WLen = Len(.Cells(Wi, 2)) WlAg = Right(.Cells(Wi, 2), WLen - 6) Workbooks("doc17.xls").Sheets("Agences").Cells(1, WNAg) = WlAg
Wr = WNAg WSi = Wi 'Debug.Print Workbooks("doc17.xls").Sheets ("Agences").ActiveCell.Name Charg End If If Left(.Cells(Wi, 1), 5) = "Somme" Then Wr = 5 WSi = Wi Charg End If Wi = Wi + 1 Loop
End With
Bonjour Mireille,
Il ne faut pas craquer ;-)
AV a posté il y a quelques jours ce code qui récupère les lignes des
sous-totaux (Merci AV !)...
--
Sub Sous_Ttx()
Application.ScreenUpdating = False
ActiveSheet.Outline.ShowLevels RowLevels:=2
Dim plg As Range
Set plg = Range("A2:D" & [A65536].End(3).Row -
1).SpecialCells(xlCellTypeConstants, 23). _
SpecialCells(xlCellTypeVisible)
For Each c In plg
Cells(c.Row, "E") = "fifi"
Next
ActiveSheet.Outline.ShowLevels RowLevels:=3
End Sub
--
Il suffit, dans ton cas, de modifier la boucle For Each... et d'y ajouter le
"copier / collage special: valeurs, transposé" pour copier/coller toutes les
lignes des sous-totaux transposées en colonnes, par exemple sur une deuxième
feuille (Range à adapter en fonction de tes données) :
--
Sub Sous_TtxAvecCopie()
Application.ScreenUpdating = False
ActiveSheet.Outline.ShowLevels RowLevels:=2
Dim plg As Range
Dim col As Integer
Dim c As Range
Set plg = Range("A2:D" & [A65536].End(3).Row - 1) _
.SpecialCells(xlCellTypeConstants, 23). _
SpecialCells(xlCellTypeVisible)
col = 1
For Each c In plg
Range(Cells(c.Row, "A"), Cells(c.Row, "D")).Copy
Sheets(2).Cells(1, col).PasteSpecial Paste:=xlValues, Transpose:=True
col = col + 1
Next
ActiveSheet.Outline.ShowLevels RowLevels:=3
End Sub
--
Bonne journée !
Lydya
"Mireille qui craque" <anonymous@discussions.microsoft.com> a écrit dans le
message de news:06eb01c39474$bf9d9a80$a401280a@phx.gbl...
Bjr,
J'ai un probleme sur lequel je bute (et je suis polie)
depuis hier.
A partir d'une feuille ou j'ai genere des sous-totaux je
veux pour chaque ligne sous totale generer un tableau en
colonne. Pb je ne connais pas le nombre de rupture. Donc
j'ai imaginé queje pouvais creer 3 colonnes en les
recopiant.
Le resultat du script ci-dessous donne rien en terme de
recopie, les formules ne sont pas reconduites !!!
Help me avant que je saute par la fenetre (je suis au
1er ...)
Merci
Wi = 1
WNAg = 5
On Err GoTo Terr
With Ws
Do Until Left(.Cells(Wi, 1), 5) = "Total"
If Left(.Cells(Wi, 2), 5) = "Somme" Then
WNAg = WNAg + 3
Workbooks("doc17.xls").Sheets("Agences").Activate
Workbooks("doc17.xls").Sheets("Agences").Range
("E1:G17").Select
'Application.CutCopyMode = False
Workbooks("doc17.xls").Sheets
("Agences").Selection.Copy
Workbooks("doc17.xls").Sheets("Agences").Range
(Cells(17, WNAg + 2), Cells(1, WNAg)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
WLen = Len(.Cells(Wi, 2))
WlAg = Right(.Cells(Wi, 2), WLen - 6)
Workbooks("doc17.xls").Sheets("Agences").Cells(1,
WNAg) = WlAg
Wr = WNAg
WSi = Wi
'Debug.Print Workbooks("doc17.xls").Sheets
("Agences").ActiveCell.Name
Charg
End If
If Left(.Cells(Wi, 1), 5) = "Somme" Then
Wr = 5
WSi = Wi
Charg
End If
Wi = Wi + 1
Loop
Bonjour Mireille, Il ne faut pas craquer ;-) AV a posté il y a quelques jours ce code qui récupère les lignes des sous-totaux (Merci AV !)... -- Sub Sous_Ttx() Application.ScreenUpdating = False ActiveSheet.Outline.ShowLevels RowLevels:=2 Dim plg As Range Set plg = Range("A2:D" & [A65536].End(3).Row - 1).SpecialCells(xlCellTypeConstants, 23). _ SpecialCells(xlCellTypeVisible) For Each c In plg Cells(c.Row, "E") = "fifi" Next ActiveSheet.Outline.ShowLevels RowLevels:=3 End Sub -- Il suffit, dans ton cas, de modifier la boucle For Each... et d'y ajouter le "copier / collage special: valeurs, transposé" pour copier/coller toutes les lignes des sous-totaux transposées en colonnes, par exemple sur une deuxième feuille (Range à adapter en fonction de tes données) : -- Sub Sous_TtxAvecCopie() Application.ScreenUpdating = False ActiveSheet.Outline.ShowLevels RowLevels:=2 Dim plg As Range Dim col As Integer Dim c As Range Set plg = Range("A2:D" & [A65536].End(3).Row - 1) _ .SpecialCells(xlCellTypeConstants, 23). _ SpecialCells(xlCellTypeVisible) col = 1 For Each c In plg Range(Cells(c.Row, "A"), Cells(c.Row, "D")).Copy Sheets(2).Cells(1, col).PasteSpecial Paste:=xlValues, Transpose:=True col = col + 1 Next ActiveSheet.Outline.ShowLevels RowLevels:=3 End Sub -- Bonne journée ! Lydya
"Mireille qui craque" a écrit dans le message de news:06eb01c39474$bf9d9a80$ Bjr, J'ai un probleme sur lequel je bute (et je suis polie) depuis hier. A partir d'une feuille ou j'ai genere des sous-totaux je veux pour chaque ligne sous totale generer un tableau en colonne. Pb je ne connais pas le nombre de rupture. Donc j'ai imaginé queje pouvais creer 3 colonnes en les recopiant. Le resultat du script ci-dessous donne rien en terme de recopie, les formules ne sont pas reconduites !!! Help me avant que je saute par la fenetre (je suis au 1er ...) Merci
Wi = 1 WNAg = 5 On Err GoTo Terr With Ws Do Until Left(.Cells(Wi, 1), 5) = "Total" If Left(.Cells(Wi, 2), 5) = "Somme" Then WNAg = WNAg + 3 Workbooks("doc17.xls").Sheets("Agences").Activate Workbooks("doc17.xls").Sheets("Agences").Range ("E1:G17").Select 'Application.CutCopyMode = False Workbooks("doc17.xls").Sheets ("Agences").Selection.Copy Workbooks("doc17.xls").Sheets("Agences").Range (Cells(17, WNAg + 2), Cells(1, WNAg)).Select ActiveSheet.Paste Application.CutCopyMode = False WLen = Len(.Cells(Wi, 2)) WlAg = Right(.Cells(Wi, 2), WLen - 6) Workbooks("doc17.xls").Sheets("Agences").Cells(1, WNAg) = WlAg
Wr = WNAg WSi = Wi 'Debug.Print Workbooks("doc17.xls").Sheets ("Agences").ActiveCell.Name Charg End If If Left(.Cells(Wi, 1), 5) = "Somme" Then Wr = 5 WSi = Wi Charg End If Wi = Wi + 1 Loop
End With
Mireille qui NE craque plus
Merci pour ton aide
-----Message d'origine----- Bonjour Mireille, Il ne faut pas craquer ;-) AV a posté il y a quelques jours ce code qui récupère les lignes des
sous-totaux (Merci AV !)... -- Sub Sous_Ttx() Application.ScreenUpdating = False ActiveSheet.Outline.ShowLevels RowLevels:=2 Dim plg As Range Set plg = Range("A2:D" & [A65536].End(3).Row - 1).SpecialCells(xlCellTypeConstants, 23). _ SpecialCells(xlCellTypeVisible) For Each c In plg Cells(c.Row, "E") = "fifi" Next ActiveSheet.Outline.ShowLevels RowLevels:=3 End Sub -- Il suffit, dans ton cas, de modifier la boucle For Each... et d'y ajouter le
"copier / collage special: valeurs, transposé" pour copier/coller toutes les
lignes des sous-totaux transposées en colonnes, par exemple sur une deuxième
feuille (Range à adapter en fonction de tes données) : -- Sub Sous_TtxAvecCopie() Application.ScreenUpdating = False ActiveSheet.Outline.ShowLevels RowLevels:=2 Dim plg As Range Dim col As Integer Dim c As Range Set plg = Range("A2:D" & [A65536].End(3).Row - 1) _ .SpecialCells(xlCellTypeConstants, 23). _ SpecialCells(xlCellTypeVisible) col = 1 For Each c In plg Range(Cells(c.Row, "A"), Cells(c.Row, "D")).Copy Sheets(2).Cells(1, col).PasteSpecial Paste:=xlValues, Transpose:=True
col = col + 1 Next ActiveSheet.Outline.ShowLevels RowLevels:=3 End Sub -- Bonne journée ! Lydya
"Mireille qui craque" a écrit dans le
message de news:06eb01c39474$bf9d9a80$ Bjr, J'ai un probleme sur lequel je bute (et je suis polie) depuis hier. A partir d'une feuille ou j'ai genere des sous-totaux je veux pour chaque ligne sous totale generer un tableau en colonne. Pb je ne connais pas le nombre de rupture. Donc j'ai imaginé queje pouvais creer 3 colonnes en les recopiant. Le resultat du script ci-dessous donne rien en terme de recopie, les formules ne sont pas reconduites !!! Help me avant que je saute par la fenetre (je suis au 1er ...) Merci
Wi = 1 WNAg = 5 On Err GoTo Terr With Ws Do Until Left(.Cells(Wi, 1), 5) = "Total" If Left(.Cells(Wi, 2), 5) = "Somme" Then WNAg = WNAg + 3 Workbooks("doc17.xls").Sheets("Agences").Activate Workbooks("doc17.xls").Sheets("Agences").Range ("E1:G17").Select 'Application.CutCopyMode = False Workbooks("doc17.xls").Sheets ("Agences").Selection.Copy Workbooks("doc17.xls").Sheets("Agences").Range (Cells(17, WNAg + 2), Cells(1, WNAg)).Select ActiveSheet.Paste Application.CutCopyMode = False WLen = Len(.Cells(Wi, 2)) WlAg = Right(.Cells(Wi, 2), WLen - 6) Workbooks("doc17.xls").Sheets("Agences").Cells(1, WNAg) = WlAg
Wr = WNAg WSi = Wi 'Debug.Print Workbooks("doc17.xls").Sheets ("Agences").ActiveCell.Name Charg End If If Left(.Cells(Wi, 1), 5) = "Somme" Then Wr = 5 WSi = Wi Charg End If Wi = Wi + 1 Loop
End With
.
Merci pour ton aide
-----Message d'origine-----
Bonjour Mireille,
Il ne faut pas craquer ;-)
AV a posté il y a quelques jours ce code qui récupère les
lignes des
sous-totaux (Merci AV !)...
--
Sub Sous_Ttx()
Application.ScreenUpdating = False
ActiveSheet.Outline.ShowLevels RowLevels:=2
Dim plg As Range
Set plg = Range("A2:D" & [A65536].End(3).Row -
1).SpecialCells(xlCellTypeConstants, 23). _
SpecialCells(xlCellTypeVisible)
For Each c In plg
Cells(c.Row, "E") = "fifi"
Next
ActiveSheet.Outline.ShowLevels RowLevels:=3
End Sub
--
Il suffit, dans ton cas, de modifier la boucle For
Each... et d'y ajouter le
"copier / collage special: valeurs, transposé" pour
copier/coller toutes les
lignes des sous-totaux transposées en colonnes, par
exemple sur une deuxième
feuille (Range à adapter en fonction de tes données) :
--
Sub Sous_TtxAvecCopie()
Application.ScreenUpdating = False
ActiveSheet.Outline.ShowLevels RowLevels:=2
Dim plg As Range
Dim col As Integer
Dim c As Range
Set plg = Range("A2:D" & [A65536].End(3).Row - 1) _
.SpecialCells(xlCellTypeConstants, 23). _
SpecialCells(xlCellTypeVisible)
col = 1
For Each c In plg
Range(Cells(c.Row, "A"), Cells(c.Row, "D")).Copy
Sheets(2).Cells(1, col).PasteSpecial Paste:=xlValues,
Transpose:=True
col = col + 1
Next
ActiveSheet.Outline.ShowLevels RowLevels:=3
End Sub
--
Bonne journée !
Lydya
"Mireille qui craque"
<anonymous@discussions.microsoft.com> a écrit dans le
message de news:06eb01c39474$bf9d9a80$a401280a@phx.gbl...
Bjr,
J'ai un probleme sur lequel je bute (et je suis polie)
depuis hier.
A partir d'une feuille ou j'ai genere des sous-totaux je
veux pour chaque ligne sous totale generer un tableau en
colonne. Pb je ne connais pas le nombre de rupture. Donc
j'ai imaginé queje pouvais creer 3 colonnes en les
recopiant.
Le resultat du script ci-dessous donne rien en terme de
recopie, les formules ne sont pas reconduites !!!
Help me avant que je saute par la fenetre (je suis au
1er ...)
Merci
Wi = 1
WNAg = 5
On Err GoTo Terr
With Ws
Do Until Left(.Cells(Wi, 1), 5) = "Total"
If Left(.Cells(Wi, 2), 5) = "Somme" Then
WNAg = WNAg + 3
Workbooks("doc17.xls").Sheets("Agences").Activate
Workbooks("doc17.xls").Sheets("Agences").Range
("E1:G17").Select
'Application.CutCopyMode = False
Workbooks("doc17.xls").Sheets
("Agences").Selection.Copy
Workbooks("doc17.xls").Sheets("Agences").Range
(Cells(17, WNAg + 2), Cells(1, WNAg)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
WLen = Len(.Cells(Wi, 2))
WlAg = Right(.Cells(Wi, 2), WLen - 6)
Workbooks("doc17.xls").Sheets("Agences").Cells(1,
WNAg) = WlAg
Wr = WNAg
WSi = Wi
'Debug.Print Workbooks("doc17.xls").Sheets
("Agences").ActiveCell.Name
Charg
End If
If Left(.Cells(Wi, 1), 5) = "Somme" Then
Wr = 5
WSi = Wi
Charg
End If
Wi = Wi + 1
Loop
-----Message d'origine----- Bonjour Mireille, Il ne faut pas craquer ;-) AV a posté il y a quelques jours ce code qui récupère les lignes des
sous-totaux (Merci AV !)... -- Sub Sous_Ttx() Application.ScreenUpdating = False ActiveSheet.Outline.ShowLevels RowLevels:=2 Dim plg As Range Set plg = Range("A2:D" & [A65536].End(3).Row - 1).SpecialCells(xlCellTypeConstants, 23). _ SpecialCells(xlCellTypeVisible) For Each c In plg Cells(c.Row, "E") = "fifi" Next ActiveSheet.Outline.ShowLevels RowLevels:=3 End Sub -- Il suffit, dans ton cas, de modifier la boucle For Each... et d'y ajouter le
"copier / collage special: valeurs, transposé" pour copier/coller toutes les
lignes des sous-totaux transposées en colonnes, par exemple sur une deuxième
feuille (Range à adapter en fonction de tes données) : -- Sub Sous_TtxAvecCopie() Application.ScreenUpdating = False ActiveSheet.Outline.ShowLevels RowLevels:=2 Dim plg As Range Dim col As Integer Dim c As Range Set plg = Range("A2:D" & [A65536].End(3).Row - 1) _ .SpecialCells(xlCellTypeConstants, 23). _ SpecialCells(xlCellTypeVisible) col = 1 For Each c In plg Range(Cells(c.Row, "A"), Cells(c.Row, "D")).Copy Sheets(2).Cells(1, col).PasteSpecial Paste:=xlValues, Transpose:=True
col = col + 1 Next ActiveSheet.Outline.ShowLevels RowLevels:=3 End Sub -- Bonne journée ! Lydya
"Mireille qui craque" a écrit dans le
message de news:06eb01c39474$bf9d9a80$ Bjr, J'ai un probleme sur lequel je bute (et je suis polie) depuis hier. A partir d'une feuille ou j'ai genere des sous-totaux je veux pour chaque ligne sous totale generer un tableau en colonne. Pb je ne connais pas le nombre de rupture. Donc j'ai imaginé queje pouvais creer 3 colonnes en les recopiant. Le resultat du script ci-dessous donne rien en terme de recopie, les formules ne sont pas reconduites !!! Help me avant que je saute par la fenetre (je suis au 1er ...) Merci
Wi = 1 WNAg = 5 On Err GoTo Terr With Ws Do Until Left(.Cells(Wi, 1), 5) = "Total" If Left(.Cells(Wi, 2), 5) = "Somme" Then WNAg = WNAg + 3 Workbooks("doc17.xls").Sheets("Agences").Activate Workbooks("doc17.xls").Sheets("Agences").Range ("E1:G17").Select 'Application.CutCopyMode = False Workbooks("doc17.xls").Sheets ("Agences").Selection.Copy Workbooks("doc17.xls").Sheets("Agences").Range (Cells(17, WNAg + 2), Cells(1, WNAg)).Select ActiveSheet.Paste Application.CutCopyMode = False WLen = Len(.Cells(Wi, 2)) WlAg = Right(.Cells(Wi, 2), WLen - 6) Workbooks("doc17.xls").Sheets("Agences").Cells(1, WNAg) = WlAg
Wr = WNAg WSi = Wi 'Debug.Print Workbooks("doc17.xls").Sheets ("Agences").ActiveCell.Name Charg End If If Left(.Cells(Wi, 1), 5) = "Somme" Then Wr = 5 WSi = Wi Charg End If Wi = Wi + 1 Loop
End With
.
Ellimac
Bonjour,
La macro suivante récupère les sous totaux en colonne A et recopie le libellé de la colonne A et la valeur calculée et va coller à partir de la colonne G :
Sub Toto() nb = Application.CountIf(Range(Range("a1"), _ Range("a1").End(xlDown)), "Somme*") Range("a1").Select For cpt = 1 To nb Range(ActiveCell, ActiveCell.End(xlDown)).Find ("Somme", LookIn:=xlValues).Activate ActiveCell.Copy Range("g1").Offset(0, cpt - 1) ActiveCell.End(xlToRight).Copy a = ActiveCell.Address Range("g1").Offset(1, cpt - 1).PasteSpecial xlPasteValues Range(a).Select Next End Sub
Camille
-----Message d'origine----- Bjr, J'ai un probleme sur lequel je bute (et je suis polie) depuis hier. A partir d'une feuille ou j'ai genere des sous-totaux je veux pour chaque ligne sous totale generer un tableau en colonne. Pb je ne connais pas le nombre de rupture. Donc j'ai imaginé queje pouvais creer 3 colonnes en les recopiant. Le resultat du script ci-dessous donne rien en terme de recopie, les formules ne sont pas reconduites !!! Help me avant que je saute par la fenetre (je suis au 1er ...) Merci
Wi = 1 WNAg = 5 On Err GoTo Terr With Ws Do Until Left(.Cells(Wi, 1), 5) = "Total" If Left(.Cells(Wi, 2), 5) = "Somme" Then WNAg = WNAg + 3 Workbooks("doc17.xls").Sheets("Agences").Activate Workbooks("doc17.xls").Sheets("Agences").Range ("E1:G17").Select 'Application.CutCopyMode = False Workbooks("doc17.xls").Sheets ("Agences").Selection.Copy Workbooks("doc17.xls").Sheets("Agences").Range (Cells(17, WNAg + 2), Cells(1, WNAg)).Select ActiveSheet.Paste Application.CutCopyMode = False WLen = Len(.Cells(Wi, 2)) WlAg = Right(.Cells(Wi, 2), WLen - 6) Workbooks("doc17.xls").Sheets("Agences").Cells(1, WNAg) = WlAg
Wr = WNAg WSi = Wi 'Debug.Print Workbooks("doc17.xls").Sheets ("Agences").ActiveCell.Name Charg End If If Left(.Cells(Wi, 1), 5) = "Somme" Then Wr = 5 WSi = Wi Charg End If Wi = Wi + 1 Loop
End With .
Bonjour,
La macro suivante récupère les sous totaux en colonne A et
recopie le libellé de la colonne A et la valeur calculée
et va coller à partir de la colonne G :
Sub Toto()
nb = Application.CountIf(Range(Range("a1"), _
Range("a1").End(xlDown)), "Somme*")
Range("a1").Select
For cpt = 1 To nb
Range(ActiveCell, ActiveCell.End(xlDown)).Find
("Somme", LookIn:=xlValues).Activate
ActiveCell.Copy Range("g1").Offset(0, cpt - 1)
ActiveCell.End(xlToRight).Copy
a = ActiveCell.Address
Range("g1").Offset(1, cpt - 1).PasteSpecial
xlPasteValues
Range(a).Select
Next
End Sub
Camille
-----Message d'origine-----
Bjr,
J'ai un probleme sur lequel je bute (et je suis polie)
depuis hier.
A partir d'une feuille ou j'ai genere des sous-totaux je
veux pour chaque ligne sous totale generer un tableau en
colonne. Pb je ne connais pas le nombre de rupture. Donc
j'ai imaginé queje pouvais creer 3 colonnes en les
recopiant.
Le resultat du script ci-dessous donne rien en terme de
recopie, les formules ne sont pas reconduites !!!
Help me avant que je saute par la fenetre (je suis au
1er ...)
Merci
Wi = 1
WNAg = 5
On Err GoTo Terr
With Ws
Do Until Left(.Cells(Wi, 1), 5) = "Total"
If Left(.Cells(Wi, 2), 5) = "Somme" Then
WNAg = WNAg + 3
Workbooks("doc17.xls").Sheets("Agences").Activate
Workbooks("doc17.xls").Sheets("Agences").Range
("E1:G17").Select
'Application.CutCopyMode = False
Workbooks("doc17.xls").Sheets
("Agences").Selection.Copy
Workbooks("doc17.xls").Sheets("Agences").Range
(Cells(17, WNAg + 2), Cells(1, WNAg)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
WLen = Len(.Cells(Wi, 2))
WlAg = Right(.Cells(Wi, 2), WLen - 6)
Workbooks("doc17.xls").Sheets("Agences").Cells(1,
WNAg) = WlAg
Wr = WNAg
WSi = Wi
'Debug.Print Workbooks("doc17.xls").Sheets
("Agences").ActiveCell.Name
Charg
End If
If Left(.Cells(Wi, 1), 5) = "Somme" Then
Wr = 5
WSi = Wi
Charg
End If
Wi = Wi + 1
Loop
La macro suivante récupère les sous totaux en colonne A et recopie le libellé de la colonne A et la valeur calculée et va coller à partir de la colonne G :
Sub Toto() nb = Application.CountIf(Range(Range("a1"), _ Range("a1").End(xlDown)), "Somme*") Range("a1").Select For cpt = 1 To nb Range(ActiveCell, ActiveCell.End(xlDown)).Find ("Somme", LookIn:=xlValues).Activate ActiveCell.Copy Range("g1").Offset(0, cpt - 1) ActiveCell.End(xlToRight).Copy a = ActiveCell.Address Range("g1").Offset(1, cpt - 1).PasteSpecial xlPasteValues Range(a).Select Next End Sub
Camille
-----Message d'origine----- Bjr, J'ai un probleme sur lequel je bute (et je suis polie) depuis hier. A partir d'une feuille ou j'ai genere des sous-totaux je veux pour chaque ligne sous totale generer un tableau en colonne. Pb je ne connais pas le nombre de rupture. Donc j'ai imaginé queje pouvais creer 3 colonnes en les recopiant. Le resultat du script ci-dessous donne rien en terme de recopie, les formules ne sont pas reconduites !!! Help me avant que je saute par la fenetre (je suis au 1er ...) Merci
Wi = 1 WNAg = 5 On Err GoTo Terr With Ws Do Until Left(.Cells(Wi, 1), 5) = "Total" If Left(.Cells(Wi, 2), 5) = "Somme" Then WNAg = WNAg + 3 Workbooks("doc17.xls").Sheets("Agences").Activate Workbooks("doc17.xls").Sheets("Agences").Range ("E1:G17").Select 'Application.CutCopyMode = False Workbooks("doc17.xls").Sheets ("Agences").Selection.Copy Workbooks("doc17.xls").Sheets("Agences").Range (Cells(17, WNAg + 2), Cells(1, WNAg)).Select ActiveSheet.Paste Application.CutCopyMode = False WLen = Len(.Cells(Wi, 2)) WlAg = Right(.Cells(Wi, 2), WLen - 6) Workbooks("doc17.xls").Sheets("Agences").Cells(1, WNAg) = WlAg
Wr = WNAg WSi = Wi 'Debug.Print Workbooks("doc17.xls").Sheets ("Agences").ActiveCell.Name Charg End If If Left(.Cells(Wi, 1), 5) = "Somme" Then Wr = 5 WSi = Wi Charg End If Wi = Wi + 1 Loop