XL pour MAC Copie de cellules dans une autre feuille excel

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

marcheurnordique

XLDnaute Junior
Bonjour à tous,

Je voudrais saisir dans les cellules C22, D22, E22, F22, les données de la feuille 4 et incrémenter ceci dans lignes suivantes (C23,D23,E23,F23 - C24,D24,E24,F24… etc.
Le problème, c'est que les données à copier sont en lignes et je veux les mettre en colonnes.
Si cela peut se faire automatiquement, ça serait encore mieux…
Pouvez-vous m'aider, s'il vous plaît ?
Merci d'avance pour votre recherche.
Je vous joins un fichier.
marcheurnordique
 

Pièces jointes

Bonjour marcheurnordique, djidji59430,

Voyez le fichier .xlsm joint et cette macro dans le code de la 2ème feuille :
VB:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
[A2].Resize(Rows.Count - 1, Columns.Count).ClearContents 'RAZ
With Feuil1.[A1].CurrentRegion
    If .Columns.Count = 1 Then Exit Sub
    [A2] = 1
    With .Cells(1, 2).Resize(.Rows.Count, .Columns.Count - 1)
        [B2].Resize(.Columns.Count, .Rows.Count) = Application.Transpose(.Cells)
        [A2].Resize(.Columns.Count).DataSeries 'numérotation (classement)
        [B2].Offset(, .Rows.Count).Resize(.Columns.Count) = "=IF(SUM(RC3:RC[-1]),SUM(RC3:RC[-1]),"""")"
        [B2].Resize(.Columns.Count, .Rows.Count + 1).Sort [B2].Offset(, .Rows.Count), xlAscending, Header:=xlNo
    End With
End With
End Sub
Elle se déclenche quand on active la feuille.

A+
 

Pièces jointes

Dernière édition:
Bonsoir job75 et djidji59430,
Désolé de répondre si tard, mais j'étais parti toute la journée.
Le travail que vous avez fait est déjà très bien, mais j'aurais voulu que dans la feuille 5, les temps soient des temps au tour (exemple : Dossard 1 - Tour 1 (C5) = 01:00, Tour 2 (D5) = soit 00:42 au tour, Tour 3 (E5) = 00:08 au tour, Tour 4 (F5) = 00:07 au tour.
Et que dans la feuille 5, ces temps "au tour" soient reportés automatiquement dans les cellules correspondantes (C5-D5-E5-F5), mais il faut que dans la cellule G5, ce soit le temps cumulé des cellules C5-D5-E5-F5 qui soit reporté.
 
djidji59430,
Dans la feuille 4, il n'y a pas besoin d'additionner les temps des 4 tours, car le temps de la cellule B2 est le temps du tour 1, le temps de la cellule B3 est le temps du tour 1 et du tour 2 cumulés et le temps de la cellule B4 est le temps du tour 1, du tour 2 et du tour 3 cumulés et le temps de la cellule B5 est le temps du tour 1, du tour 2, du tour 3 et du tour 4 cumulés. Il ne faut pas additionner les temps des 4 cellules.
Par contre, dans la feuille 5, je veux que les temps tour par tour soient reportés dans les cellules C2, D2, E2 et F2 et dans la cellule G2 il faut que ce soit la somme des 4 cellules précédemment citées soit 01:57.
 
J'ai essayé le fichier, mais les temps du dossard (par exemple), des cellules C2, D2, E2 et F2 de la feuille 5 doivent être des temps tour par tour c'est à dire 00:05 pour le 1er tour, 00:04 pour le 2ème tour, 00:02 pour le 3ème tour et 00:01 pour le 4ème tour et dans la cellule G2 doit apparaître la somme des 4 cellules précédemment citées, soit 00:12.
Par contre, les temps des cellules B2,B3,B4 et B5 sont des temps cumulés (additionnés tour par tour).
 
djidji59430,
Je viens de m'apercevoir que lorsque je fais un tri sur le temps, les numéros de dossards ne correspondent pas avec les temps et les cellules vides se mettent en premier.
J'aimerais que ces cellules vides se mettent en dernier, en suite logique.
Comment faire un classement normal ?
Merci pour ta réponse.
marcheurnordique
 
Bonjour marcheurnordique, le forum,

Voyez ce fichier (2) et la macro complétée pour les différences entre tours :
VB:
Private Sub Worksheet_Activate()
Dim tablo, cc%, resu(), i&, j%
Application.ScreenUpdating = False
[A2].Resize(Rows.Count - 1, Columns.Count).ClearContents 'RAZ
With Feuil1.[A1].CurrentRegion
    If .Columns.Count = 1 Or .Rows.Count = 1 Then Exit Sub
    [A2] = 1
    With .Cells(1, 2).Resize(.Rows.Count, .Columns.Count - 1)
        [A2].Resize(.Columns.Count).DataSeries 'numérotation (classement)
        [B2].Resize(.Columns.Count, .Rows.Count) = Application.Transpose(.Cells)
        With [C2].Resize(.Columns.Count, .Rows.Count - 1)
            tablo = .Value 'matrice, plus rapide
            cc = .Columns.Count
            ReDim resu(1 To .Rows.Count, 1 To cc)
            For i = 1 To .Rows.Count
                resu(i, 1) = tablo(i, 1)
                For j = 2 To cc
                    resu(i, j) = tablo(i, j) - tablo(i, j - 1)
                    If resu(i, j) = 0 Then resu(i, j) = ""
            Next j, i
            .Value = resu 'restitution
        End With
        [B2].Offset(, .Rows.Count).Resize(.Columns.Count) = "=IF(SUM(RC3:RC[-1]),SUM(RC3:RC[-1]),"""")"
        [B2].Resize(.Columns.Count, .Rows.Count + 1).Sort [B2].Offset(, .Rows.Count), xlAscending, Header:=xlNo
    End With
End With
End Sub
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour