Macro par enregistreur - besoin d'une petite aide

Bonjour,
Voila j'ai fais mes macro par l'enregistreur puis essayé de simplifié
Mais dans mon enregistreur j'ai selectionné la colonne jusqu'à la fin (car les données seront nombreuses), mais n'iront pas jusqu'a la fin, je pense que je devrais en avoir dans les 10-15 000
Y a t-il un truc plus simple ?
Je vous joins mes macros (et pas de rire hein, j'apprend doucement :D)
Par avance, grand merci pour l'aide

Sub Cc_date()
'
' Cc_date Macro
'

'
 Sheets("synthèse").Select
    ActiveWindow.SmallScroll Down:=-15
    Range("B5").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("pr_export").Select
    Range("A4").Select
    ActiveSheet.Paste
End Sub
Sub cc_cmde()
'
' cc_cmde Macro
'

'
    Sheets("synthèse").Select
    ActiveWindow.SmallScroll Down:=-15
    Range("D5").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("pr_export").Select
    Range("B4").Select
    ActiveSheet.Paste
End Sub
Sub cc_qte()
'
' cc_qte Macro
'

'
    Sheets("synthèse").Select
    Range("H5").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("pr_export").Select
    Range("D4").Select
    ActiveSheet.Paste
End Sub
Sub cc_ref()
'
' cc_ref Macro
'

'
    Sheets("synthèse").Select
    Range("F5").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("pr_export").Select
    Range("M4").Select
    ActiveSheet.Paste
End Sub
Sub cc_CP()
'
' cc_CP Macro
'

'
    Sheets("synthèse").Select
    Range("M5").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("pr_export").Select
    Range("R4").Select
    ActiveSheet.Paste
End Sub
Sub cc_VILLE()
'
' cc_VILLE Macro
'

'
    Sheets("synthèse").Select
    Range("K5").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("pr_export").Select
    Range("S4").Select
    ActiveSheet.Paste
End Sub
Sub CC_PV()
'
' CC_PV Macro
'

'
    Range("E4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.FormulaR1C1 = "=+synthèse!R[1]C[10]+synthèse!R[1]C[11]"
End Sub
Sub CC_PORT()
'
' CC_PORT Macro
'

'
    Range("F4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.FormulaR1C1 = "=+synthèse!R[1]C[12]+synthèse!R[1]C[11]"
End Sub

Sub CC_TTC()
'
' CC_TTC Macro
'

'
    Application.CutCopyMode = False
    Range("G4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.FormulaR1C1 = "=+RC[-1]+RC[-2]"
End Sub

Sub Bouton15_Cliquer()
Call Cc_date
Call cc_cmde
Call cc_qte
Call cc_ref
Call cc_CP
Call cc_VILLE
Call CC_PV
Call CC_PORT
Call CC_TTC
End Sub

Bonjour micsel

Très très bien d'avoir pensé à utiliser l'enregistreur de macro

Maintenant, il est vrai qu'après il y a de l'optimisation à faire, voici un exemple pour Cc_Date

Sub Cc_date()
  Dim dLig As Long
  ' Avec la feuille source
  With Sheets("synthèse")
    ' Récupérer le numéro de la dernière ligne remplie
    dLig = .Range("B" & Rows.Count).End(xlUp).Row
    ' Copire/coller la palge
    .Range("B5:B" & dLig).Copy Destination:=Sheets("pr_export").Range("A4")
  End With
End Sub

A appliquer pour les autres

A+

Bonjour Miscel, bonjour le forum,

Peut-être comme ça (non testé) :

Option Explicit
Private OS As Worksheet
Private PE As Worksheet
Private DL As Integer

Sub Init()
Set OS = Worksheets("synthèse")
Set PE = Worksheets("pr_export")
End Sub

Sub Cc_date() ' Cc_date Macro
DL = OS.Cells(Application.Rows.Count, "B").End(xlUp).Row
OS.Range("B5:B" & DL).Copy PE.Range("A4")
End Sub

Sub cc_cmde() ' cc_cmde Macro
DL = OS.Cells(Application.Rows.Count, "D").End(xlUp).Row
OS.Range("D5:D" & DL).Copy PE.Range("B4")
End Sub

Sub cc_qte() ' cc_qte Macro
DL = OS.Cells(Application.Rows.Count, "H").End(xlUp).Row
OS.Range("H5:H" & DL).Copy PE.Range("D4")
End Sub

Sub cc_ref() ' cc_ref Macro
DL = OS.Cells(Application.Rows.Count, "F").End(xlUp).Row
OS.Range("F5:F" & DL).Copy PE.Range("M4")
End Sub

Sub cc_CP() ' cc_CP Macro
DL = OS.Cells(Application.Rows.Count, "M").End(xlUp).Row
OS.Range("M5:M" & DL).Copy PE.Range("R4")
End Sub

Sub cc_VILLE() ' cc_VILLE Macro
DL = OS.Cells(Application.Rows.Count, "K").End(xlUp).Row
OS.Range("K5:K" & DL).Copy PE.Range("S4")
End Sub

Sub CC_PV() ' CC_PV Macro
DL = OS.Cells(Application.Rows.Count, "E").End(xlUp).Row
OS.Range("E4:E" & DL).FormulaR1C1 = "=+synthèse!R[1]C[10]+synthèse!R[1]C[11]"
End Sub

Sub CC_PORT() ' CC_PORT Macro
DL = OS.Cells(Application.Rows.Count, "F").End(xlUp).Row
OS.Range("F4:F" & DL).FormulaR1C1 = "=+synthèse!R[1]C[10]+synthèse!R[1]C[11]"
End Sub

Sub CC_TTC() ' CC_TTC Macro
DL = OS.Cells(Application.Rows.Count, "G").End(xlUp).Row
OS.Range("G4:G" & DL).FormulaR1C1 = "=+RC[-1]+RC[-2]"
End Sub

Sub Bouton15_Cliquer()
Call Init
Call Cc_date
Call cc_cmde
Call cc_qte
Call cc_ref
Call cc_CP
Call cc_VILLE
Call CC_PV
Call CC_PORT
Call CC_TTC
End Sub

@ThauThème, @BrunoM45,

Merci pour vos propositions ;)
je vais prendre celle de Bruno, car je l'ai plus facilement comprise.
et oui c'est assez pratique lorsque l'on est novice pour faire quelques macros, après c'est claire que ca met des lignes en veux tu en voilà, mais ca à le mérite d'exister.

En tout cas merci pour les infos et en plus ca rame moins

@brunoM45,

j'ai essayé de la reproduire pour les formules CC_PV, PORT et TTC, et je n'arrive pas a à ajuster le bout de code dessus.

mais impossible du coup (certainement car ce n'est pas du copier coller)
voila le bout de code que j'ai "bidouillé"

Sub CC_PV()
' CC_PV Macro
Dim dLig As Long
   ' Avec la feuille source
  With Sheets("synthèse")
    ' Récupérer le numéro de la dernière ligne remplie
    dLig = .Range("O" & Rows.Count).End(xlUp).Row
    Range("E4").Select
    Range("O5:O" & dLig).Select
    Selection.FormulaR1C1 = "=+synthèse!R[1]C[10]+synthèse!R[1]C[11]"
   End With
End Sub

Re,

Effectivement, mais il faut absolument éviter les ".Select" qui alourdissent l'exécution et ne sont absolument pas nécessaire

Comme on travaille avec l'objet conteneur qu'est la feuille, il ne faut pas oublier de mettre le "." point devant "Range"
De plus je préfère utiliser "FormulaLocal" qui permet d'inscrire les formules telles qu'elles se présentent dans la feuille

Voici le code corrigé, à vérifier la formule

Sub CC_PV()
' CC_PV Macro
Dim dLig As Long
   ' Avec la feuille source
  With Sheets("synthèse")
    ' Récupérer le numéro de la dernière ligne remplie
    dLig = .Range("O" & Rows.Count).End(xlUp).Row
    .Range("O5:O" & dLig).FormulaLocal = "=synthèse!J1+synthèse!K1"
   End With
End Sub

A+

Salut @BrunoM45

Un soucis dans le code (j'ai essayé d'y apporter la modif necessaire d'ou le laps de temps)
en fait dans ce bout de code il ne vient pas faire le calcul dans "pr_export" à la ligne 4, mais dans le fichier synthèse il enlève les données.

Bonjour,

Même si on ne connait pas VBA,
je pense que le code est assez compréhensible et je pense que vous savez lire, non

   ' Avec la feuille source
  With Sheets("pr-export")

A+

Sub CC_PV()
' CC_PV Macro
Dim dLig As Long
   ' Avec la feuille source
  With Sheets("synthèse")
    ' Récupérer le numéro de la dernière ligne remplie
    dLig = .Range("O" & Rows.Count).End(xlUp).Row
    .Range("O5:O" & dLig).FormulaLocal = ("=synthèse!J1+synthèse!K1")
   End With
End Sub

Ceci est la macro : la feuille source est bonne : ca vient bien chercher dans synthèse, pas de soucis je l'ai comprise.
j'ai compris également le principe d'aller chercher jusqu'à la dernière ligne du fichier, pas de soucis

Sauf que dans ce cas prècis, il efface la O5 par la formule J1+K1
au lieu de faire la formule "synthèse! R1[C12]+synthèse! R1[C11] (ou cela aurait pu etre o5+p5) dans la feuille de destination qui est donc "pr_export au départ de E4

du coup j'avais essayé de réadapter le bout de code que tu m'as donné, puisque cela ne produit pas le résultat attendu, et la je coince :

Sub CC_PV()
' CC_PV Macro
Dim dLig As Long
   ' Avec la feuille source
  With Sheets("synthèse")
    ' Récupérer le numéro de la dernière ligne remplie
    dLig = .Range("O" & Rows.Count).End(xlUp).Row
    ' Formule dans la déstination
    .Range("O5:O" & dLig).FormulaLocal = ("=+synthèse!R[1]C[12]+synthèse!R[1]C[11]").Destination:=Sheets("pr_export").Range("D4")
   End With
End Sub

la ligne .range("o5 .......) se place en rouge
il doit y avoir une erreur dans ma compil

Sachant que je doit la faire 2 fois encore, je me dis y a un loup, (avant de revenir, j'ai fouillé partout, car j'essai de comprendre)

Re,

Malheureusement, vous n'avez pas compris

ca vient bien chercher dans synthèse

Ca vient chercher quoi !?

Si je reprends votre code initial, voilà ce que vous devriez avoir

Sub CC_PV()
  Dim dLig as Long
  With Sheets("pr_export")
    dLig = .range("E" & Rows.count).End(XlUp).Row
    .Range("E4:E" & dlig).FormulaLocal = "=synthèse!J1+synthèse!K1"
  End With
End Sub

Alors effectivement, je ne comprend pas grand chose (d'ou à la base des enregistrement de macro)
La macro ne fonctionne pas, elle supprime l'entete de la feuille (E3) et n'applique la formule que jusque E4
Alors que l'idée était de partir de E4 et aller jusqu'à la fin de la dernière ligne active de "synthèse" col O

2test.xlsm (306.75 Ko)

j'ai réussi a avoir le fichier a 300Ko, je me permets de te l'envoyer

Bon du coup,
j'ai ajouté une colonne dans "synthèse" et procéder avec le même code que pour les autres, à savoir :

Sub CC_PV()
  Dim dLig As Long
  ' Avec la feuille source
  With Sheets("synthèse")
    ' Récupérer le numéro de la dernière ligne remplie
    dLig = .Range("AF" & Rows.Count).End(xlUp).Row
    ' Copier/coller la plage
    .Range("AF5:AF" & dLig).Copy Destination:=Sheets("pr_export").Range("E4")
  End With
End Sub

je n'arrivais pas a restauré correctement les prix de ventes port et TTC

En tout cas grand merci pour ce petit bout de coder que j'ai bien apprivoiser

Rechercher des sujets similaires à "macro enregistreur besoin petite aide"