Recopie de sous-totaux

michel1941

XLDnaute Nouveau
Bonjour à tous,

Je suis un utilisateur d'Excel sans aucune connaissances.
Je désire recopier les sous-totaux de la feuille "Communes" ver les lignes 3, 6, 9, 12, 15 18 et 21 de la feuille "Pourcentages". Les lignes de départ dans la feuille "Communes" sont dynamiques, je ne peux pas coller avec liaisons. (Voir le fichier annexé)
Est-il possible de trouver une solution?
Merci d'avance de vos réponses.
 

Pièces jointes

  • Test1.zip
    17.1 KB · Affichages: 27
  • Test1.zip
    17.1 KB · Affichages: 25
  • Test1.zip
    17.1 KB · Affichages: 26
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Recopie de sous-totaux

Salut michel1941 et le forum
feuille pourcentage, en B3 la formule
Code:
=INDEX(Communes!$A$1:$D$65000;EQUIV($A3;Communes!$A$1:$A$65000;0);COLONNE())
Tu n'a plus qu'à recopier sur C3, D3, B6:D6, etc...
A+
 

michel1941

XLDnaute Nouveau
Re : Recopie de sous-totaux

Salut michel1941 et le forum
feuille pourcentage, en B3 la formule
Code:
=INDEX(Communes!$A$1:$D$65000;EQUIV($A3;Communes!$A$1:$A$65000;0);COLONNE())
Tu n'a plus qu'à recopier sur C3, D3, B6:D6, etc...
A+

Merci de cette réponse mais elle ne fait pas ce que je désire.
Je veux recopier toute la ligne de départ dont le numéro peut changer s'il y a des lignes ajoutées dans la feuille "communes". En revanche les lignes de destination dans la feuille "pourcentages" sont fixes. Chaque sous-total de départ correspond à une ligne distincte dans la destination (voir le fichier test1 attaché).
Merci à tous
 

michel1941

XLDnaute Nouveau
Re : Recopie de sous-totaux

Bonjour à tous,

Je suis un utilisateur d'Excel sans aucune connaissances.
Je désire recopier les sous-totaux de la feuille "Communes" ver les lignes 3, 6, 9, 12, 15 18 et 21 de la feuille "Pourcentages". Les lignes de départ dans la feuille "Communes" sont dynamiques, je ne peux pas coller avec liaisons. (Voir le fichier annexé)
Est-il possible de trouver une solution?
Merci d'avance de vos réponses.

Pour préciser, il faut que je recopie les lignes qui contiennent "Total*" dans la colonne A de départ vers des lignes fixes de la destination
 

Gorfael

XLDnaute Barbatruc
Re : Recopie de sous-totaux

Salut michel1941 et le forum
Merci de cette réponse mais elle ne fait pas ce que je désire.
Qu'est-ce que tu désires ?
Parce que si tu as copié ma formule en B3, puis copié la cellule B3, sur C3, puis sur D3, c'est bien les valeurs de la feuille précédente qui sont recopiées. Une formule par cellule, et cette formule évolue, en fonction d'où elle se trouve
INDEX(Communes!$A$1:$D$65000;EQUIV($A3;Communes!$A$1:$A$65000;0);COLONNE())
Index(X;Y;Z) : retourne une valeur de la plage X dont la ligne est Y et la colonne Z
Equiv(A;B;0) : retourne un nombre correspondant à la ligne dans la plage B (ici une seule colonne) dont la valeur est exactement égale à A
Colonne() : retourne un nombre qui détermine la colonne dans laquelle est la formule
$A3 : adressage Absolu pour la colonne et relatif par la ligne (si tu copies la cellule B3 en B6, elle devient $A6)
$A$1 : adressage absolu, la référence ne bouge pas

La formule retourne la valeur dont la ligne contient en A la valeur de A, et la même colonne que celle qui contient la formule.

Si tu veux de l'aide, commence par essayer les solutions/méthodes données. Elle peuvent ne pas convenir, mais il faut dire pourquoi.
La seule solution pour copier une ligne, c'est de passer par une macro. Mais d'après ce qui est donné, ça ne se justifie pas forcément. Mais si c'est ce que tu veux, il faut le dire clairement, avec le mode de lancement souhaité.
A+
A+
 

michel1941

XLDnaute Nouveau
Re : Recopie de sous-totaux

Salut michel1941 et le forumQu'est-ce que tu désires ?
Parce que si tu as copié ma formule en B3, puis copié la cellule B3, sur C3, puis sur D3, c'est bien les valeurs de la feuille précédente qui sont recopiées. Une formule par cellule, et cette formule évolue, en fonction d'où elle se trouve
INDEX(Communes!$A$1:$D$65000;EQUIV($A3;Communes!$A$1:$A$65000;0);COLONNE())
Index(X;Y;Z) : retourne une valeur de la plage X dont la ligne est Y et la colonne Z
Equiv(A;B;0) : retourne un nombre correspondant à la ligne dans la plage B (ici une seule colonne) dont la valeur est exactement égale à A
Colonne() : retourne un nombre qui détermine la colonne dans laquelle est la formule
$A3 : adressage Absolu pour la colonne et relatif par la ligne (si tu copies la cellule B3 en B6, elle devient $A6)
$A$1 : adressage absolu, la référence ne bouge pas

La formule retourne la valeur dont la ligne contient en A la valeur de A, et la même colonne que celle qui contient la formule.

Si tu veux de l'aide, commence par essayer les solutions/méthodes données. Elle peuvent ne pas convenir, mais il faut dire pourquoi.
La seule solution pour copier une ligne, c'est de passer par une macro. Mais d'après ce qui est donné, ça ne se justifie pas forcément. Mais si c'est ce que tu veux, il faut le dire clairement, avec le mode de lancement souhaité.
A+
A+

Je me suis mal exprimé en disant que la solution ne correspondait pas à mes désirs. Désolé mais il me semblait avoir été assez clair.

Donc je reprend :

La feuille de départ contient 98 colonnes et 50 lignes de sous-totaux. J'ai seulement voulu donner un petit exemple dans le fichier attaché. La solution proposée est lourde à mettre en oeuvre. Je pensais effectivement à une macro mais c'est trop compliqué pour mon niveau, raison pour laquelle je me suis inscrit sur ce forum.
Merci d'avance pour votre aide et votre indulgence pour un débutant.
 

Tibo

XLDnaute Barbatruc
Re : Recopie de sous-totaux

Bonjour,

Sur la base de ce que j'ai compris, une approche avec une formule matricielle à mettre en A3 :

Code:
=SI(LIGNES($1:1)/3>NB.SI(Communes!A:A;"Total*");"";SI(MOD(LIGNES($1:1);3)=1;INDEX(Communes!$A$1:$A$500;PETITE.VALEUR(SI(GAUCHE(Communes!$A$1:$A$500;5)="Total";(GAUCHE(Communes!$A$1:$A$500;5)="Total")*LIGNE(Communes!$A$1:$A$500));NB.SI($A$2:A2;"Total*")+1));SI(MOD(LIGNES($1:1);3)=2;"% Lieu";"% Total")))

Formule matricielle à valider par CTRL + MAJ + ENTREE

à recopier vers le bas

Pour les autres colonnes, on peut reprendre les formules proposées par Gorfael ou passer par un RECHERCHEV

Voir le fichier joint pour la formule proposée en colonne A

@+
 

Pièces jointes

  • Michel_1941.zip
    14.8 KB · Affichages: 15

chris

XLDnaute Barbatruc
Re : Recopie de sous-totaux

Bonjour

Copier une formule dans une cellule, la recopier sur les colonnes adjacentes (1 manip avec la poignée de recopie) et sur 49 autres lignes (1 sélection + une copie soit 2 manips) tu appelles cela lourd ?

Quelque chose m'échappe !
 

Gorfael

XLDnaute Barbatruc
Re : Recopie de sous-totaux

Salut michel1941 et le forum
Je me suis mal exprimé : ma formule est limité au domaine demandé dans l'exemple, soit la ligne D. Mais il suffit de remplacer le "$D" par "$CL" pour avoir une formule qui fonctionne de A à CL, le reste de la formule est basé sur la colonne A, coù sur la colonne qui contient la formule.

Mais si tu préfères, on peut passer par macro : Mais quel est la taille réelle de ton tableau de départ (donne les adresses de début et de fin)?
- Quel est ton niveau en VBA ?
A+
 

michel1941

XLDnaute Nouveau
Re : Recopie de sous-totaux

Bonjour à tous et merci,
Je désire effectivement passer par une macro. La dimension actuelle du tableau est (A1:CT500). Je suis débutant en VBA mais capable de comprendre et d'adapter un exemple s'il n'est pas trop "futé".

Merci de votre patience et A+
 
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Recopie de sous-totaux

Salut michel1941 et le forum
Je désire effectivement passer par une macro.
Tu l'aurais dit d'entrée, tu te serais évité quelques postes.
Code:
Sub Test()
'Déclaration ==================================
Dim X As Long, Cel As Range, Plage As Range
Dim F_O As Worksheet, F_D As Worksheet
'MEI ==========================================
Set F_O = Sheets("Communes")        'Feuille origine
Set F_D = Sheets("Pourcentages")    'Feuille destination
X = 3                               'première ligne
'remise à zéro ---------------------------------
F_D.Range(F_D.[A6], F_D.Range("A1").SpecialCells(xlCellTypeLastCell)).Clear
'Effacement des données de A6 à dernière utilisée de la feuille destination
'Traitement ===================================
For Each Cel In F_O.Range(F_O.[A1], F_O.Cells(Rows.Count, "A").End(xlUp))
'Chaque cellule de A1 à dernière non vide de la feuille d'origine
    If Cel Like "Total*" Then
    'Si Cel commence par total, alors
        Cel.EntireRow.Copy
        'copier la ligne
        F_D.Range("A" & X).PasteSpecial xlPasteValues
        'coller les valeurs à partir de Ax de la feuille destination
        F_D.Range("A" & X).PasteSpecial xlPasteFormats
        'Coller les formats
        If X > 3 Then
        'Si ce n'est pas le premier copier/coller
            F_D.Rows(X - 2).Copy F_D.Rows(X + 1)
            'Ligne+1=ligne-2 (formules et formats)
            F_D.Rows(X - 1).Copy F_D.Rows(X + 2)
            'ligne-1=ligne+2 (idem)
        End If
        X = X + 3
        'augmenter x de 3
    End If
Next Cel
End Sub
si on avait les formules en B4, C4, etc... j'aurais pu faire autre chose, mais ne les ayant pas, je me suis contenté de séparer la copie de la ligne 4 de la ligne 5. Attention toutefois si tu veux faire des formules : regardes dans l'aide de range("x").formula ou Formulalocal ou formulaR1C1Local, pour voir ce que tu dois faire.
A+
 

michel1941

XLDnaute Nouveau
Re : Recopie de sous-totaux

Bonsoir,

Un très grand merci pour cette réponse qui comble exactement mes voeux et qui me servira d'exemple pour la suite de mon petit projet.
Désolé de mes explications peu claires du début mais il faut un début à tout, je ne suis pas un habitué des forums.
Avec encore mes remerciements, A+
 

Discussions similaires

Statistiques des forums

Discussions
312 545
Messages
2 089 476
Membres
104 177
dernier inscrit
MMAURI