Repartition par onglet
billy
-
Billy -
Billy -
bonjour,
Je souhaiterais repartir les infos de la première feuille (une centaine de ligne), dans les feuilles correspondantes en fonction du nom de l'element (le nombre d'element peut varier de 1 à 10 environ). voir exemple sur le document joint.
Cependant je n'y connait rien en programmation. si quelque peut m'aider pour une solution.
http://www.cjoint.com/15av/EDdwSylhOle.htm
merci D'avance
Je souhaiterais repartir les infos de la première feuille (une centaine de ligne), dans les feuilles correspondantes en fonction du nom de l'element (le nombre d'element peut varier de 1 à 10 environ). voir exemple sur le document joint.
Cependant je n'y connait rien en programmation. si quelque peut m'aider pour une solution.
http://www.cjoint.com/15av/EDdwSylhOle.htm
merci D'avance
A voir également:
- Repartition par onglet
- Raccourci rouvrir onglet fermé - Guide
- Edge nouvel onglet google ✓ - Forum Microsoft Edge / Internet Explorer
- Excel onglet données grisé ✓ - Forum Excel
- Ouvrir nouvel onglet google - Forum Microsoft Edge / Internet Explorer
- Groupe d'onglet chrome - Guide
2 réponses
Bonsoir Billy, bonsoir le forum,
Peut-être comme ça :
Peut-être comme ça :
Sub Macro1() Dim OI As Worksheet 'déclare la variable OI (Onglet Infos) Dim TC As Variant 'déclare la variable TC (Tableau de Cellules) Dim O As Worksheet 'déclare la variable O (Onglets) Dim I As Integer 'déclare la variable I (Incrément de ligne) Dim OD As Worksheet 'déclare la variable OD (Onglet Destination) Dim DEST As Range 'déclare la variable DEST(cellule de DESTination) Set OI = Sheets("Infos") 'définit l'onglet OI TC = OI.Range("A1").CurrentRegion 'définit le tableau de cellules TC 'première boucle pour supprimer les anciennes données et mettre en place les en-têtes For Each O In Sheets 'boucle sur tous les onglets O du classeur If Not O.Name = "Infos" Then 'condition : si le nom de l'onglet n'est pas "infos" O.Cells.ClearContents 'vide le contenu de l'onglet O.Range("A1").Value = "litre" 'écrit "litre" en A1 O.Range("B1").Value = "heure" 'écrit "heure" en B1 O.Range("C1").Value = "conso" 'écrit "conso" en C1 O.Range("D1").Value = "activité" 'écrit "activité" en D1 End If 'fin de la condition Next O 'prochain onglet de la boucle 'boucle 2 pour dispatcher les données dans les onglets correspondants For I = 3 To UBound(TC, 1) 'boucle sur toutes les lignes I du tableau TC (en partant de la troisième) Set OD = Sheets(TC(I, 3)) 'définit l'onglet de destination OD Set DEST = OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellue de destination DEST DEST.Value = TC(I, 2) 'récupère le litre dans DEST DEST.Offset(0, 1).Value = TC(I, 4) 'récupère l'heure dans DEST décalée d'une colonne à droite DEST.Offset(0, 3).Value = TC(I, 5) 'récupère l'activité dans DEST décalée de trois colonnes à droite Next I 'prochaine ligne de la boucle 'boucle 3 pour les formules For Each O In Sheets 'boucle 1 : sur toutes les lignes I du tableau TC (en partant de la troisième) If Not O.Name = "Infos" Then 'condition 1 : si le nom de l'onglet n'est pas "infos" 'définit la dernière ligne éditée Dl de la colonn e1 (=A) de l'onglet O DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row If DL = 1 Then Exit Sub 'si DL=1, sort de la procédure If DL > 1 Then 'condition 2 : si DL est supérieure à 1 O.Cells(2, 3).Value = "/" 'place le slash (/) dans la ligne 2 colonne 3 (=C) If DL > 2 Then 'condition 3 : si Dl est supérieure à 2 For I = 3 To DL 'boucle 2 : de 3 à DL 'place la formule dans la cellule ligne I colonne 3 (=C) O.Cells(I, 3).FormulaR1C1 = "=RC[-2]/(RC[-1]-R[-1]C[-1])" Next I 'prochaine ligne de la boucle End If 'fin de la condition 3 End If 'fin de la condition 2 End If 'fin de la condition 1 Next O 'prochain onglet de la boucle End Sub