Modification d'une macro

bonjour à tous

Voici quelques mois que j'utilise un fichier avec des macros qu'un membre du forum m'avait réalisé :p

Tout est comme je le souhaitais sauf une toute petites chose.

je m'explique et vous met le fichier en pièce jointe afin que vous puissiez m aider.

lorsque je suis sur l'onglet récap choix et que je clique sur valider, la copie s'enclenche sur l'onglet voulu ainsi que sur le tableau général. le problème et que, ce ne sont pas simplement les 2 lignes qui sont copiés dans le tableau général comme dans l'onglet voulu, mais l'entièreté de l'onglet... ce qui m'oblige à effacer manuellement les autres lignes.

pourriez vous me modifier cette macro afin que seul les lignes 14 et 15 de l'onglet récap choix soit copiée dans le tableau général et que celui ci soit trié par date automatiquement après cette copie.

merci beaucoup

Bonjour,

Je ne sais pas qui t'a écrit le programme mais... ouah... pas ouah parce que c'est bien écrit hein, mais ouah parce que ce n'est pas écrit pour être modifié!

Des déclarations n'importe comment, des façons d'écrire que je déteste etc etc...

J'ai commencé à réécrire un peu le programme pour qu'il soit déjà plus lisible mais ça va être compliqué pour le bas du code, je mets là où j'en suis ici:

Sub CpyData()
Application.ScreenUpdating = 0
On Error GoTo ErrFeuille
Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet
Dim dlig&, nlm&, chn$, lig&
Dim plg As Range

nlm = Range("a" & Rows.Count).End(xlUp).Row 'dernière ligne remplie
Set sh1 = Worksheets("récap du choix")
Set sh2 = Worksheets(chn) 'y'aura peut-être ErrFeuille !
Set sh3 = Worksheets("tableau général")
chn = [B7]
dlig = Cells(nlm, 1).End(3).Row

If ActiveSheet.Name <> sh1.Name Or dlig = 13 Or chn = "" Then
    Exit Sub
End If

Range("A14:N" & dlig).Copy
sh2.Select

lig = Cells(nlm, 1).End(3)(2).Row
Cells(lig, 1).PasteSpecial -4163
lig = Cells(nlm, 1).End(3).Row
[A1].Select: Set plg = Range("A3:N" & lig)
With Worksheets("tableau général")
  plg.Sort [B3], 1
  plg.Copy: lig = .Cells(nlm, 1).End(3)(2).Row
  .Cells(lig, 1).PasteSpecial -4163
  Application.CutCopyMode = 0
  .Select
  [A1].Select
End With
sh1.Select
MsgBox "Copie effectuée.", 64, "CpyData": Exit Sub
ErrFeuille:
MsgBox "La feuille """ & [B7] & """ n'existe pas.", 48, "Erreur"
End Sub

Merci beaucoup

Car moi, je ne suis vraiment pas doué la dedans

Bonjour,

J'ai revu tout le programme à ma façon, histoire que ce soit plus lisible...

J'ai donc pu modifier ce qui avait été fait, ça ne copiera que les lignes remplies depuis la ligne 14, donc les lignes 14 et 15, et ça trie bien selon les dates de la plus ancienne à la plus récente

Voici le fichier:

Bonjour,

Super je te remercie cela va me faire gagner un temps précieux.

Puis je encore te demander de modifier la macro, car en testant je me suis aperçu que

  • lorsque tout est validé, dans l'onglet "recap choix", les données s’effacent et je préférerai qu'elles restent affichées car parfois certains clients prennent plusieurs fois la même commande donc il me suffit de recliquer sur le bouton valider. (ce qui n'est pas possible si les données s'éffacent).
  • dans l'onglet général la liste est mise dans l'ordre des dates par contre dans l'onglet individuel, cela ne se réalise pas. Si cela pouvait ce faire ce serai magnifique car c'est dans les onglets individuels que le stock est calculé en fonction des dates

Merci pour ce fantastique travail :p

Bonjour,

Oui je peux faire ça plutôt facilement, j'ai passé en commentaire la partie du programme qui supprimait la zone de saisie, et j'ai modifié un peu le code pour faire la copie et le tri sur 2 feuilles différentes sans avoir à tout réécrire une deuxième fois

Voici le fichier mis à jour:

merci beaucoup

c'est parfait

Rechercher des sujets similaires à "modification macro"