insérer nouvelle ligne à un endroit aléatoire

pilou1944

XLDnaute Nouveau
Bonjour à tous,
tout nouveau sur ce forum et tout à fait moyen avec Excel, je viens demander conseil aux spécialistes.
J'ai créé un tableur destiné à reprendre les relevés bancaires et les dépenses en cours.
Ce fichier sera partagé et donc protégé. Seules les cellules non protégées seront accessibles.
DATE, N° Réf, DÉBITS, CRÉDITS.
Je voudrais pouvoir insérer une ligne tout de suite après la dernière ligne où se trouvent les valeurs des transactions.
Le vrai problème réside dans le fait que lorsque je crée une nouvelle ligne, la formule dans la ligne suivant ne change pas.
Ligne 7 = dernière ligne que l'utilisateur à remplie
Ligne 8 = Modèle à insérer
Ligne 9 = reporte les soldes, résultat de la ligne 7

Dans la ligne 9 cellule "K9" se trouve la formule "=K7"

Si j'insère une nouvelle ligne entre la ligne 7 et la ligne 8, celle-ci deviendra ligne 8 et celle qui était 9 deviendra 10
mais actuellement la formule qui était "=K7" reste identique alors qu'elle devrait devenir "=K8".
C'est en vérité sur ce point que je bute.

Exemples et explications en pièces jointes.

Voici le code que j'ai mis dans la macro.

new_ligne Macro
Cells.Find(What:="aa21aa", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

LA PARTIE CI-DESSUS SERT À REPÉRER L'EMPLACEMENT DE LA LIGNE QUI DOIT ÊTRE COPIÉE
---------------------------------------
LA PARTIE CI-DESSOUS COPIE LA LIGNE SÉLECTIONNÉE (CELLE DU DESSUS)

Dim lg As Integer
lg = ActiveCell.Row
Range("A" & lg).EntireRow.Insert
Range("A" & lg - 1 & ":AI" & lg - 1).Copy
Range("A" & lg).PasteSpecial Paste:=xlPasteAll
Range("A" & lg).PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
End Sub

C'est une macro copiée sur le net et aménagée avec la partie du dessus suivant mes besoins.

En pièces jointes le dossier Excel avec quelques explications.

Merci d'avance pour votre aide.
 

Pièces jointes

  • image Excel.jpg
    image Excel.jpg
    47.6 KB · Affichages: 53
  • image Excel.jpg
    image Excel.jpg
    47.6 KB · Affichages: 62
  • image Excel.jpg
    image Excel.jpg
    47.6 KB · Affichages: 61
  • MODELE EXCEL.xlsm
    63.8 KB · Affichages: 48

youky(BJ)

XLDnaute Barbatruc
Re : insérer nouvelle ligne à un endroit aléatoire

Bonjour et bienvenu Pilou pour le 1er message,
Je voulais juste signaler qu'un fichier en mode partagé accepte très mal la protection de feuille
Fait un test d'un fichier protégé en mode partagé.
De là à insérer une nouvelle ligne cela sera dur sur un classeur protégé.
Bruno
 

pilou1944

XLDnaute Nouveau
Re : insérer nouvelle ligne à un endroit aléatoire

Bonsoir Bruno,

merci pour ton intervention, tout fonctionne super bien.
Par contre je me retrouve devant un nouveau problème.
Le code que j'avais était copiable de mois en mois, de ce fait j'ai réduis le dossier au minimum, ne mettant que le mois de Janvier, il faudrait pouvoir gérer les 11 autres mois de la même façon.

J'ai été incapable de modifier ta macro pour qu'elle fonctionne sur plusieurs mois.

J'ai lu attentivement tes explications mais il y a une partie que je n'ai pas comprise.
J'ai mis des annotations dans ce message. Si en tu pouvais préciser ces deux points.

Je joints le dossier "MODÈLE EXCEL 2"
Merci pour ta patience
Pilou.
 

Pièces jointes

  • MODELE EXCEL 2.xlsm
    57.4 KB · Affichages: 37
Dernière édition:

youky(BJ)

XLDnaute Barbatruc
Re : insérer nouvelle ligne à un endroit aléatoire

Re bonjour,
Voici le fichier modifié avec la macro.
Pour la protection je te laisse voir
Message explicatif en fichier.
Bruno
 

Pièces jointes

  • MODELE EXCEL (1).xlsm
    53.4 KB · Affichages: 38

fenec

XLDnaute Impliqué
Re : insérer nouvelle ligne à un endroit aléatoire

Bonjour le forum, Pilou1944, Youky

Une autre approche si bien compris
J'ai modifié la formule en K
A VOIR

Philippe
 

Pièces jointes

  • Essai.xlsm
    30 KB · Affichages: 39
  • Essai.xlsm
    30 KB · Affichages: 42
  • Essai.xlsm
    30 KB · Affichages: 39

pilou1944

XLDnaute Nouveau
Re : insérer nouvelle ligne à un endroit aléatoire

Bonsoir Fenec,

merci de ton intervention mais malheureusement je n'ai pas pu faire fo.nctionner le dossier ni voir la macro
Désolé, ce n'est pas exploitable.

Merci quand même

Pilou.
 

pilou1944

XLDnaute Nouveau
Re : insérer nouvelle ligne à un endroit aléatoire

Bonsoir Bruno,
merci pour ton intervention.
J'ai voulu mettre une nouvelle pièce jointe, ce n'est pas possible dans les réponses.
J'ai donc modifié l'ancien message.
Si tu veux aller le voir SvP

Merci.
 

youky(BJ)

XLDnaute Barbatruc
Re : insérer nouvelle ligne à un endroit aléatoire

Bonjour Pilou, Fenec,
Il est toujours possible d'envoyer un fichier, il faut cliquer sur [Aller en mode avancé]
Pour moi cela a l'air bon. A toi de faire le reste et boutons(attention c'est plus des boutons formulaire)
Il n'y a plus la petite main, si tu y tiens je t'indiquerais la marche à suivre
Tu y trouveras le trombone...
J'ai mis des explications dans ton encart.
Demande aussi si besoin
Bruno
 

Pièces jointes

  • MODELE EXCEL 5.xlsm
    65.6 KB · Affichages: 53

pilou1944

XLDnaute Nouveau
Re : insérer nouvelle ligne à un endroit aléatoire

Bonsoir Bruno,
Merci pour tes explications.
C'est très clair.
Je vois que tu n'as pas peur de travailler aussi le Dimanche.
Quand on aime on ne compte pas, c'est ce qui se dit.

La macro fonctionne au poil.
J'ai quand même un petit soucis.
Cette macro devrait copier aussi les cellules jusqu'à N2
Normalement je sais faire mais je n'ai pas la possibilité d'affecter une nouvelle macro à ces boutons.
Je voulais aussi le centrer mais il n'est pas sélectionnable.

Peux-tu me faire la modif SvP ?

Comment fais-tu pour immobiliser les bouton sans bloquer le reste ?

Cordialement
Pilou
 

pilou1944

XLDnaute Nouveau
Re : insérer nouvelle ligne à un endroit aléatoire

Bonjour Bruno,
je reviens vers toi car je n'ai pas la possibilité de copier et coller la macro dans un autre dossier, et l'affecter à un autre bouton .
Je reçois un message de débogage que je ne sais pas traiter.

Public nlig As Long
Sub NouvelLigne()
Range("B" & nlig).Resize(1, 11).Insert Shift:=xlDown
[B2:N2].Copy
Cells(nlig, 2).PasteSpecial
Cells(nlig, 2).Select
Application.CutCopyMode = False
End Sub

Il serait beaucoup plus facile pour moi de pouvoir la copier coller dans un autre fichier.
Merci encore pour ton aide précieuse.
Pilou
 

youky(BJ)

XLDnaute Barbatruc
Re : insérer nouvelle ligne à un endroit aléatoire

Salut,
Je viens de te faire un fichier Aide pour accéder aux boutons et leur code.
Avec cette aide je pense que tu as tout pour finir.
La variable nlig est renseignée par le bouton qui ensuite va exécuter Sub NouvelLigne()


Dans la macro en module1 il faut remplacer 11 par 13
Range("B" & nlig).Resize(1, 13).Insert Shift:=xlDown

Bruno
 

Pièces jointes

  • AideMacros.xlsx
    196 KB · Affichages: 37

pilou1944

XLDnaute Nouveau
Re : insérer nouvelle ligne à un endroit aléatoire

Bonsoir Bruno.
en effet, avec tes explications je suis arrivé à faire fonctionner mon appli, elle n'est pas complètement terminée, mais cela avance bien, grâce à toi.
Je te remercie infiniment de ton aide qui me fut extrêmement précieuse.

Par contre, je bute encore sur un détail. je reviens donc prendre un peu de ton temps.

J'ai une page BASE.
Et une page MODÈLE.
Dans la BASE se trouve un bouton "CRÉER UN NOUVEAU DOSSIER".
Ce bouton commande une macro qui copie le MODÈLE, crée une nouvelle page qui normalement devrait se trouver, (en dernier),

La commande:
Sur l'onglet de la feuille "clic droit", "déplacer ou copier", "(en dernier), "créer une copie", "OK".

Et sauf le fait qu'elle se crée tout de suite après le modèle ???? et donc les feuilles se trouvent numérotées en sens inverse,
tout fonctionne pour le mieux.
Bon je peux me contenter de cela. Mais )!!!!!

La macro insère les cellules du MODÈLE dans cette nouvelle page.
Dans cette page se trouve une cellule, avec liste déroulante, dans laquelle on doit choisir le nom du dossier.

Ces noms de dossier sont créés dans une colonne de la BASE.
et il a une colonne abréviations;

Expl:
NOMS ABREV

Association XXX xxx 2013
Association yyy yyy 2013

Mon but serait de renommer la feuille (dans l'onglet en bas), avec le texte de l'ABREV de façon automatique, lorsque l'on choisit le NOM du fichier, dans la liste déroulante.

Ce qui me permettrait de créer une feuille par an et par association, (nous en gérons 3)

Normalement, avec ce poste, mon Appli devrait fonctionner au top.

Merci encore, cordialement,
Pilou
 

pilou1944

XLDnaute Nouveau
Re : insérer nouvelle ligne à un endroit aléatoire

Bonjour Bruno,
bien sûr j'ai un nouveau problème.
Je n'arrive pas à positionner mes commentaires.
À la création je leur donne une forme et un emplacement, à la validation, ils se retrouvent d'office à droite de leur cellule, ce qui fait que lorsque cette cellule se trouve à droite du fichier, le commentaire sort du cadre visible.
As-tu une solution ou une autre proposition pour laisser un message à l'utilisateur ?
Merci, cordialement
Pilou
 

youky(BJ)

XLDnaute Barbatruc
Re : insérer nouvelle ligne à un endroit aléatoire

Bonjour Pilou,
Je viens de faire un classeur exemple avec userform.
Prends pas peur!!!
C'est un exemple car je ne sais pas ou sont vos données mais facile à modifier dans le code.
Bruno
 

Pièces jointes

  • MyEssai.xls
    45.5 KB · Affichages: 31
  • MyEssai.xls
    45.5 KB · Affichages: 34
  • MyEssai.xls
    45.5 KB · Affichages: 35

pilou1944

XLDnaute Nouveau
Re : insérer nouvelle ligne à un endroit aléatoire

Re salut Bruno,
tes conseils et tes exemples me sont très utiles et je te remercie de m'aider.
Mais je me trouve de nouveau devant un problème que je ne sais pas gérer
Comme je te l'ai dis, j'ai créé une page "MODÈLE" et une page "BASE".
Dans la page "BASE" il y a un bouton qui commande une macro et qui crée une nouvelle feuille, copiée sur le "MODÈLE"
"MODÈLE 2".
Dans "MODÈLE", la macro "NouvelLigne" que tu m'as concoctée fonctionne normalement.
Dans "MODÈLE 2" ou 3 ou 4 etc, cette macro ne fonctionne plus de la même façon.
Expl:
Il y a un bouton par mois.

Bouton 1: la ligne s’insère au dessus de la dernière ligne créée.
Bouton 2: Idem

OK, J'ai été voir et je crois que j'ai compris le problème, mais je n'ai pas la solution automatisée.
Lorsque je crée une nouvelle feuille, celle-ci est dupliquée à partir du"MODÈLE" ce qui implique la copie du code des boutons à l'identique.
Voici ce code que j'ai adapté dans "MODÈLE", en fonction du N° du bouton.

Private Sub CommandButton1_Click()
nlig = Feuil4.CommandButton1.TopLeftCell.Row
NouvelLigne
End Sub

Lorsque la copie se fait, cela ne change pas le N° de la feuille.
ici c'est "Feul4", dans les suivantes cela devrait changer en fonction du N° de la feuille créée.
J'ai fait l'essai manuellement, ça a l'air bon.
Voilà, je suis sûr que tu vas me trouver un code qui change ce N°, en quelques secondes.

Je te remercie et normalement tout devrait être au poil après ça.

Cordialement
Pilou
 

Discussions similaires

Réponses
3
Affichages
583

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg