Aide macro Excel
Gui.Pr
Messages postés
7
Statut
Membre
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
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
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
1 réponse
-
-
-
-
-
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 -
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
-