Aide macro Excel

Fermé
Gui.Pr Messages postés 7 Date d'inscription mercredi 10 septembre 2014 Statut Membre Dernière intervention 27 juillet 2016 - 21 juil. 2016 à 12:32
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 - 21 juil. 2016 à 20:06
Bonjour,

Pour mon travail je suis amener à créer une macro d'un niveau qui me dépasse un peu. bref, je lutte.
Seriez-vous à même de m'aider quant à la confection de boucle ?

je joint un fichier "type" de ma demande.

Ci-dessous les indications (je me plante sur la phase de sélection des éléments) :
Il s'agit d'un historique. En soit : 1 onglet garde en mémoire toutes les saisies d'un 2° onglet.
Ce que j'aimerais que fasse la macro :
Copie les éléments saisies dans l'onglet 2, les copie colle dans l'onglet 1, puis efface la saisie de l'onglet 2 afin de recommencer.

Difficultés :
- le nombre de lignes saisies dans l'onglet 2 est variable (3 - 5 -30 ect...)
- les lignes copiés doivent être coller A LA FIN de l'onglet 1 (a la suite de l'hsitorique donc)
- l'onglet 1 doit ensuite être trié par la colonne 1
- l'effacement des lignes de l'onglet 2 doivent se faire en "clearcontent" afin de conserver des formules liées.

Voilà, j'espère être assez clair... Je répondrais à toutes vos interrogations et je vous remercie par avance énormément !!

Dinendal

https://www.cjoint.com/c/FGvkFSDBFgd

A voir également:

1 réponse

f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 707
21 juil. 2016 à 14:08
Bonjour,

fichier modifie: https://www.cjoint.com/c/FGvmiA2gT6f

A+
0
Gui.Pr Messages postés 7 Date d'inscription mercredi 10 septembre 2014 Statut Membre Dernière intervention 27 juillet 2016
21 juil. 2016 à 14:25
C'est excellent ! Merci infiniment !
0
Gui.Pr Messages postés 7 Date d'inscription mercredi 10 septembre 2014 Statut Membre Dernière intervention 27 juillet 2016
21 juil. 2016 à 14:50
Arf ! je constate un souci.

Lors de la mise en mémoire des données à copier, la macro ne conserve que la première ligne de la feuil2.
Tout le reste fonctionne bien (effacement complet, tri ect...) mais je n'ai qu'une ligne de copier.

Une idée ?
0
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 707 > Gui.Pr Messages postés 7 Date d'inscription mercredi 10 septembre 2014 Statut Membre Dernière intervention 27 juillet 2016
21 juil. 2016 à 15:23
Re,

Ah Bon, chez moi tout va tres bien, les lignes supplementaires ont ete ecrites avec le code !!!!!!

Donnez un exemple
0
Gui.Pr Messages postés 7 Date d'inscription mercredi 10 septembre 2014 Statut Membre Dernière intervention 27 juillet 2016
21 juil. 2016 à 15:26
j'ai été contraint de modifier certains éléments pour coller avec mon fichier principal; malheureusement, je ne peux le faire sortir.

ici les lignes modifiées. j'ai sans doute fais une erreur dans ce cas.

Sub Historique()
Dim Plage2, Plage1 As Range


If Worksheets("En-cours").Range("A" & Rows.Count).End(xlUp).Row > 1 Then 'au moins une ligne
With Worksheets("En-cours")
Plage2 = .Range("A2", "G" & .Range("A" & Rows.Count).End(xlUp).Row) 'mise en memoire plage saisie
.Range("A2", "G" & Range("A" & Rows.Count).End(xlUp).Row).ClearContents 'effacement plage saisie
End With
With Worksheets("Historique (Dern. Val.)")
PCV = .Range("A" & Rows.Count).End(xlUp).Row + 1 'Premiere Cellule Vide colonne A
.Range("A" & PCV, "G" & PCV) = Plage2 'ecriture infos a la suite
'tri colonne A
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range("B2:B" & PCV), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("A1:G" & PCV)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
Else
MsgBox "Pas de nouvelles données."
End If
ThisWorkbook.Save

End Sub
0
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 707 > Gui.Pr Messages postés 7 Date d'inscription mercredi 10 septembre 2014 Statut Membre Dernière intervention 27 juillet 2016
21 juil. 2016 à 15:44
Re,

code modifie:

Sub Historique()
    Dim Plage2, Plage1 As Range
    
    If Worksheets("En-cours").Range("A" & Rows.Count).End(xlUp).Row > 1 Then      'au moins une ligne
        With Worksheets("En-cours")
            Plage2 = .Range("A2", "E" & .Range("A" & Rows.Count).End(xlUp).Row)     'mise en memoire plage saisie
            .Range("A2", "E" & Range("A" & Rows.Count).End(xlUp).Row).ClearContents     'effacement plage saisie
        End With
        With Worksheets("Historique (Dern. Val.)")
            PCV = .Range("A" & Rows.Count).End(xlUp).Row + 1        'Premiere Cellule Vide colonne A
            nb = UBound(Plage2) - 1
            .Range("A" & PCV, "E" & PCV + nb) = Plage2   'ecriture infos a la suite
            'tri colonne B
            .Sort.SortFields.Clear
            .Sort.SortFields.Add Key:=.Range("B2:B" & PCV + nb), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            With .Sort
                .SetRange Range("A1:E" & PCV + nb)
                .Header = xlYes
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
        End With
    Else
        MsgBox "Pas d'historique a enregistrer !!!!!!"
    End If
    ThisWorkbook.Save
    
End Sub
0