Archivage [Résolu]

Messages postés
7
Date d'inscription
vendredi 14 juin 2019
Statut
Membre
Dernière intervention
1 juillet 2019
- - Dernière réponse : Dany02_110
Messages postés
7
Date d'inscription
vendredi 14 juin 2019
Statut
Membre
Dernière intervention
1 juillet 2019
- 15 juin 2019 à 19:13
Bonjour à tous,

Tout nouveau, je viens solliciter votre aide.
J'ai un classeur Excel avec plusieurs onglets.
Chaque onglet correspond à un commercial.
Chaque commercial à un tableau ou j'enregistre ses prestations.
Chaque tableau est assez grand car il comporte 34 colonnes
et un nombre variable de lignes.
Chaque ligne correspond à une prestation. (nouveau contrat, modification de contrat)
Le nombre de ligne est en fait plus ou moins important dû aussi à l'ancienneté.
Deux lignes sous la dernière ligne du tableau, j'ai fais un petit récapitulatif.
Ce récapitulatif sous forme de tableau lui aussi, comporte 8 lignes et 8 colonnes, de B à I.
J'aimerai avoir une macro qui :
- me sélectionne ce récapitulatif,
- le copie,
- vienne se positionner 15 lignes plus bas, toujours en colonne B
par rapport à la dernière ligne du récapitulatif,
ou 23 lignes plus bas à partir de la première ligne du récapitulatif,
- insère 9 lignes (1 ligne vierge pour les intermédiaires)
- colle mon récapitulatif
- revienne sur la cellule au dessus de mon récapitulatif.

Petite précision,
Tout au long du mois, des lignes sont ajoutées dans le tableau,
( nouveaux contrats, modification de contrat )
ou des lignes sont supprimées du tableau,
( contrat résilié, fin de contrat )
Et aussi AUCUN RÉCAPITULATIF n'est positionné à la même ligne.

Par avance un grand merci pour votre aide.
Dany.
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
589
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
26 juin 2019
46
1
Merci
c'est tout aussi simple, je l'avais encore jamais croisé dans mes lectures

Sub CopieColleRecap()
    Dim derlig As Long
    Dim TabRecap As Range
    
    derlig = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    
    Set TabRecap = ActiveSheet.Range("B" & derlig + 2 & ": I" & derlig + 11)
    ActiveSheet.Range("B" & derlig + 27 & ":B" & derlig + 36).EntireRow.Insert
    TabRecap.Copy
    With ActiveSheet.Range("B" & derlig + 27)
        .Select
        .PasteSpecial Paste:=xlPasteValues
        .PasteSpecial Paste:=xlPasteFormats
    End With
    Application.CutCopyMode = False
    ActiveSheet.Range("B" & derlig + 12).Activate
    ThisWorkbook.Save

End Sub 

j'espère n'avoir rien oublié cette fois

Edit : je t'ai rajouté une sauvegarde à la fin de la routine, c'est toujours bien d'enregistrer son boulot

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 62631 internautes nous ont dit merci ce mois-ci

Commenter la réponse de fabien25000
Messages postés
589
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
26 juin 2019
46
0
Merci
Bonjour,

A quel moment cette macro est censée se déclencher?
cette macro doit agir sur une feuille choisie ou sur l'ensemble du classeur simultanément?

Commenter la réponse de fabien25000
Messages postés
7
Date d'inscription
vendredi 14 juin 2019
Statut
Membre
Dernière intervention
1 juillet 2019
0
Merci
Bonjour Fabien,

Cette macro serait déclenchée par un bouton une fois par mois,
voire deux fois si rectification(s).
Elle doit agir sur la feuille en cours.
Dans mon classeur, il y a 14 onglets ( 14 commerciaux )
nombre NON exhaustif.
Merci de ce que tu pourras faire Fabien.
Commenter la réponse de Dany02_110
Messages postés
589
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
26 juin 2019
46
0
Merci
Est ce que c'est ça que tu attends?
Sub CopieColleRecap()
    Dim derlig As Long
    Dim TabRecap As Range
    
    derlig = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    
    Set TabRecap = ActiveSheet.Range("B" & derlig + 2 & ": I" & derlig + 11)
    ActiveSheet.Range("B" & derlig + 27 & ":B" & derlig + 36).EntireRow.Insert
    TabRecap.Copy
    ActiveSheet.Range("B" & derlig + 27).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveSheet.Range("B" & derlig + 12).Activate
    
End Sub

Edit : Teste la macro sur une copie de ton fichier pour éviter de perdre des données si la macro ne réagis pas comme il faut (par exemple si la colonne A est vide car je suis parti du principe que A est remplie)

Commenter la réponse de fabien25000
Messages postés
7
Date d'inscription
vendredi 14 juin 2019
Statut
Membre
Dernière intervention
1 juillet 2019
0
Merci
C'est tout bonnement GÉNIAL.
Merci beaucoup Fabien.
Juste une petite modification, désolé j'ai oublié de préciser.
Il faudrait qu'il colle en format et valeur car dans mon récapitulatif il y a des formules
pour le calculs du salaire du mois.
Encore une fois désolé.
Commenter la réponse de Dany02_110
Messages postés
589
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
26 juin 2019
46
0
Merci
ça devrait être bon comme ça
j'ai modifié légèrement la routine en même temps que tu postais ta réponse..
Sub CopieColleRecap()
    Dim derlig As Long
    Dim TabRecap As Range
    
    derlig = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    
    Set TabRecap = ActiveSheet.Range("B" & derlig + 2 & ": I" & derlig + 11)
    ActiveSheet.Range("B" & derlig + 27 & ":B" & derlig + 36).EntireRow.Insert
    TabRecap.Copy
    ActiveSheet.Range("B" & derlig + 27).Select
    ActiveSheet.Range("B" & derlig + 27).PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    ActiveSheet.Range("B" & derlig + 12).Activate
    
End Sub 


Commenter la réponse de fabien25000
Messages postés
7
Date d'inscription
vendredi 14 juin 2019
Statut
Membre
Dernière intervention
1 juillet 2019
0
Merci
Fabien,

Encore une fois, MAGNIFIQUE.
Mais, si tu as fais un collage spécial des "valeurs", ce qui est parfait,
il n'y a pas le collage spécial pour le "format".
Ceci dit, je pense que cela ne sera qu'une petite formalité pour toi.
Encore une fois un GRAND merci.
Daniel.
fabien25000
Messages postés
589
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
26 juin 2019
46 -
il n'y a pas le collage spécial pour le "format".
autant pour moi je n'avais pas vu.. dsl
Ceci dit, je pense que cela ne sera qu'une petite formalité pour toi.
non je ne sais pas encore le faire mais google est mon ami, je vais apprendre, merci!
Commenter la réponse de Dany02_110
Messages postés
7
Date d'inscription
vendredi 14 juin 2019
Statut
Membre
Dernière intervention
1 juillet 2019
0
Merci
Sincèrement, TOUT est PARFAIT Fabien.
Je suis Épaté, Sidéré, ESPANTÉ de la facilité avec laquelle tu as résolu mon problème.
Une dernière question,
comment fait-on pour apprendre et reproduire ce que tu viens de faire ?
Moi, j'adore Excel, mais je pratique plus les formules et franchement
quand je vois ce que tu as fais, j'ai vraiment envie d'apprendre.
En plus, jeune retraité, maintenant je vais avoir du temps. (Enfin peut-être)

Encore un Grand, TRÈS GRAND merci Fabien.
Daniel.
fabien25000
Messages postés
589
Date d'inscription
mercredi 5 octobre 2016
Statut
Membre
Dernière intervention
26 juin 2019
46 -
De rien, j'adore excel aussi donc c'est avec plaisir !
il y a plein de site qui peuvent apprendre le language VBA comme celui ci par exemple, :https://openclassrooms.com/fr/courses/825502-analysez-des-donnees-avec-excel/823059-le-vba-un-langage-oriente-objet
il suffit de taper "apprendre excel vba" sur google, tu en trouveras beaucoup, et si tu as besoin nous sommes là
Dany02_110
Messages postés
7
Date d'inscription
vendredi 14 juin 2019
Statut
Membre
Dernière intervention
1 juillet 2019
-
Merci beaucoup Fabien,
SUPER SYMPA.
Bon week-end.
Daniel.
Commenter la réponse de Dany02_110