insérer les lignes avec macro (5 lignes - type)

edith2012

XLDnaute Nouveau
Bonjour,

J’aurais besoin de votre aide !!! please ! Je suis nulle en VBA mais je dois trouver une solution pour créer une macro qui permet de copier 5 lignes cachés (lignes de 39 jusqu’à 43) et les coller entre la ligne 38 et 39 (avant il faudra ajouter les lignes). Ce type de macro me permettra d’ajouter le sous-traitant en utilisant le bouton de macro et le total va se mettre à jour tout seul. Le problème que je veux qu’on puisse ajouter un nombre illimité de sous-traitant (selon besoin). J’ai caché les 5 lignes (de 39 à 43) parce que ce la trame – type (base) que je dois insérer à chaque fois et je ne veux pas que ce type soit modifié par une autre personne (bien sûr je vais protéger cette feuille)
Ci-joint la feuille

Merci d’avance !!!!!!!

cldt
 

Pièces jointes

  • Balance sous-traitance 2.xls
    71.5 KB · Affichages: 75
Dernière édition:

edith2012

XLDnaute Nouveau
Re : insérer les lignes avec macro (5 lignes - type) help!!!!!!!

merci pour le conseil mais j'ai essayé de copier le macro et ça n'a pas marché.
En plus au fur à mesure quand je vais ajouter les lignes avec les sous-traitant mon modèle qui se trouve entre la ligne 39 et 43 va se retrouver plus bas (par exemple sur la ligne 62 et 66)

cordialement
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : insérer les lignes avec macro (5 lignes - type) help!!!!!!!

Bsr
Je suis Pro (pour) VBA , mais ici n'est-il pas plus simple et rapide de faire en manuel ??
Sinon c'est sûr que tes 5 lignes modèles vont se décaler vers le bas !! Sauf si on insère à partir de 44 (donc en dessous du modèle) et non en 39
VBA : enregistre une macro en faisant les manip de ce que tu veux faire ( afficher, copier , insérer ....) , regarde le code , teste en "débogage" > pas à pas détaillé , tu verras ce qu'elle fait quand on l'éxecute .... cela sera en "dur" C.a.d. > ex : si manip avec lignes 38 43 , ce sera tjs ces lignes là qui seront utilisées , Il faudra ajouter des variables dans le code pour adapter à chaque insertion ex : derlig = .Range("b65000").End(xlUp).Row qui donnera la dernière ligne (ici en B donc ligne TOTAL) = 44
pour pouvoir insérer à partir de 44 , la fois d'après ce sera 49 ...etc
Désolé mais VBA c'est pas si simple ..... mais ça s'apprend :)

Rappel : Dans la charte ( A lire une fois) , il est notifié que cela ne sert à rien de mettre HELP , SOS .... etc dans la titre du Post
 
Dernière édition:

edith2012

XLDnaute Nouveau
Re : insérer les lignes avec macro (5 lignes - type)

Je suis désolée pour utiliser "Help" mais je suis désesperée.
Je dois trouver la solution pour demain soir. Je sais que ajouter les lignes - modèle c'est plus facile manuellement mais le problème que je dois protéger cette feuille. Ces sont les autres utilisateurs qui vont utiliser ce fichier et pour protéger certaines formules ils ne peuvent pas avoir l'accès directe au mot de passe (même si au début dans le macro je dois "déverouiller" la feuille ils ne verrons pas ça directement).
J'ai bien compris que je dois utiliser les variables mais c'est ici mon problème. Ce matin j'ai enregistré le macro pour analyser pas à pas mais je n'ai pas réussi d'ajouter les variables.
Je serais reconnaissante si vous pourriez m'aider

cordialement
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Re : insérer les lignes avec macro (5 lignes - type)

Donne Point par Point ce que tu veux faire exactement et Clairement !!! comme :
1 Inserer lignes ( Nbr, Ou ?)
2 Copier lignes ( Nbre , Ou ?)
3 Quel est le contenu
Je Bosse dessus demain, je t'enverrai un MP ce sera Plus facile et plus rapide pour la suite si tu es dispo
 

edith2012

XLDnaute Nouveau
Re : insérer les lignes avec macro (5 lignes - type)

Bonjour,

Merci beaucoup de m'avoir consacré du temps!

Ci-joint le fichier où je veux appliquer mon macro

Je voudrais que ce macro:
- insére le nouveau sous-traitant: 5 lignes ("le modèle" qui se trouve au début de tableau: lignes: B14 à P18)
Je souhaite que ce nouveau sous-traitant soit inséré avant la ligne total (pour l'instant la ligne 34) pour garder l'ordre chronologique. Dans ce cas il faudra avant la ligne total insérer 5 lignes, copier "le modèle" et coller dans les cellules insérées.
- la formule total est mis à jour à chaque fois pour prendre en compte le nouveau sous-traitant - les cellules inséreés (pour l'instant les cellules E34, F34, H34, I34 et J34)

Encore merci
Le VBA est génial, il faut que je me met petit à petit mais aujourd'hui je suis pris en piège par le manque de temps

cordialement
 

Pièces jointes

  • Balance.xls
    68 KB · Affichages: 60
  • Balance.xls
    68 KB · Affichages: 73
  • Balance.xls
    68 KB · Affichages: 85

DoubleZero

XLDnaute Barbatruc
Re : insérer les lignes avec macro (5 lignes - type)

Bonjour, le Fil, le Forum,

Dans le fichier joint, la ligne "TOTAL S.T. GO" est déplacée car je ne parviens pas à gérer à mise à jour des formules après insertion de lignes :confused:. Les lignes vierges sont nommées "modèle" (cf. le gestionnaire de noms).

VB:
Sub Lignes_insérer()
Application.ScreenUpdating = False
Rows("16:20").EntireRow.Hidden = False
Range("modèle").Copy Destination:=Range("d65536").End(xlUp)(2).Offset(, -3)
Rows("16:20").EntireRow.Hidden = True
Range("E11") = "=SUM(R21C:R[9989]C)/2"
Range("F11") = "=SUM(R21C:R[9989]C)/2"
Range("H11") = "=SUM(R21C:R[9989]C)/2"
Range("I11") = "=SUM(R21C:R[9989]C)/2"
Range("J11") = "=SUM(R21C:R[9989]C)/2"
Range("d65536").End(xlUp).Offset(-4, -2).Select
Application.ScreenUpdating = True
End Sub
Cette solution serait-elle acceptable ?

Bon courage et à bientôt :)
 

Pièces jointes

  • 00 - edith2012 - Lignes insérer.xls
    90 KB · Affichages: 54

pierrejean

XLDnaute Barbatruc
Re : insérer les lignes avec macro (5 lignes - type)

Bonjour à tous

A tester:

Code:
Sub Macro1()
x = Range("B65536").End(xlUp).Row
For n = 1 To 5
 Rows(x).Insert Shift:=xlDown
Next
Range("B14:P18").Copy
Range("B" & x).Select
ActiveSheet.Paste
For n = 5 To 10
 Cells(x + 5, n).Formula = Replace(Cells(x + 5, n).Formula, CStr(x - 1), CStr(x + 5))
Next n
End Sub
 

edith2012

XLDnaute Nouveau
Re : insérer les lignes avec macro (5 lignes - type)

Bonjour à tous!

D'abord merci pour votre aide précieuse.

En essayant les macros j'ai l'impression que le macro de Pierre-Jean marche plutôt bien. J'ai seulement 3 soucis:
- dès que je ouvre le fichier il y a le message concernant la référence circulaire (et je n'arrive pa à la trouver - ci-joint le fichier)
- le montant total ne s'affiche pas (sont invisible même si la bonne formule est là - après avoir utilisé macro)

Troisième problème concerne mon tableau. Pour demander l'aide sur ce forum je l'ai simplifié et à tort!
Finalement la ligne total est en réalité le sous total (plus bas il y a une deuxième partie de tableau : sous-traitant GO et sous-traitant SO et puis le total de deux sous-traitants. J'ai pensé que je pourrais copier le macro pour l'utiliser pour créer 2 bouton: insérér le sous-traitant GO et insérer le sous-traitant SO mais maintenant le macro ne marche pas parce que le lignes s'inserent avant la ligne total (au lieu avant la ligne sous-total)
Est-ce que quelqu'un pourrais m'aider?
Ci joint le fichier (deuxième onglet)

cldt
 

Pièces jointes

  • Balance 2.xls
    130 KB · Affichages: 74
  • Balance 2.xls
    130 KB · Affichages: 75
  • Balance 2.xls
    130 KB · Affichages: 73

pierrejean

XLDnaute Barbatruc
Re : insérer les lignes avec macro (5 lignes - type)

Re

Correction pour GO

Code:
Sub Macro1()
x = Range("B65536").End(xlUp).Row
For n = 1 To 5
 Rows(x).Insert Shift:=xlDown
Next
Range("B14:P18").Copy
Range("B" & x).Select
ActiveSheet.Paste
For n = 5 To 10
 Cells(x + 5, n).Formula = Replace(Cells(x + 5, n).Formula, CStr(x - 1), CStr(x + 4))
Next n
End Sub

Pour SO je regarde
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 392
Messages
2 087 952
Membres
103 686
dernier inscrit
maykrem