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

pilou1944

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

PS:
Ton code pour mettre l'abrégé dans le titre de la page est super bon.
Mais j'ai trouvé un truc plus facilement utilisable pour l'utilisateur, en réfléchissant et avec de la curiosité.

1) J'ai dans la "BASE"une liste "NOMS DES DOSSIERS C5:C15" et une liste "ABRÉVIATIONS D5:D15";
2) Dans la cellule "MODÈLE E5" une liste déroulante qui permet de choisir le nom du dossier;
3) Dans une autre cellule du "MODÈLE" - "A1" j'écris la formule suivante;

=SI($E$5=BASE!$C$5;BASE!$D$5; SI($E$5=BASE!$C$6;BASE!$D$6; Etc; "")

4) Viens ensuite la macro, commandée par un bouton dans "MODÈLE".

MACRO 1:

Sub Rename()
'Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Name = Range("A1").Value
End Sub

Et la page active est renommée avec la valeur écrite dans "A1"

Ceci dit, je sais qu'il existe une macro qui permet de déclencher une autre macro si telle ou telle cellule à telle valeur.
Voilà ce que j'ai trouvé et je ne sais pas comment l'adapter à mes besoins.

MACRO 2

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = Range("a1" ).Address Then

Call Module2.test_feuille_2

End If

End sub

J'imagine que, en modifiant ce code, ou en créant avec les deux une seule macro, on pourrait, par le simple fait d'avoir un nouveau titre dans "MODÈLE D5", déclencher la MACRO 2, et ce à chaque nouvelle page.
Quitte à mobiliser une cellule pour lui dire:
=si($A$1=$E$5;5);"")
et se servir de cette valeur "5" comme référence de démarrage de la MACRO 2

Est-ce possible ?

Merci
cordialement
Pilou
 

youky(BJ)

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

ActiveSheet au lieu Feuil4 comme cà c'est la feuille active dans MODELE
Private Sub CommandButton1_Click()

nlig = ActiveSheet.CommandButton1.TopLeftCell.Row
NouvelLigne
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Then Module2.test_feuille_2
End sub
OUPS!!! En A1 c'est une formule et ne déclenchera pas le Change même si la valeur renvoyée change
Plutot tester comme ca
Private Sub Worksheet_Change(ByVal Target As Range)
if [A1]=[E5] Then
Application.enabledEvents=false 'neutralise les événements pour modifier
[E5]=""

Application.enabledEvents=true
Macro2 'attention pas d'espace dans les noms de macros
end if
End sub

Voila
Bruno
 

pilou1944

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

Bonjour Bruno,
La macro pour l'insertion de ligne fonctionne au poil.
Merci beaucoup.

Par contre, j'ai un peu plus de difficulté avec la seconde.
D'abord, je ne sais pas où je dois la mettre.

Je l'ai insérée dans le code .... BÔ ...

2) De toute façon, "if[A1]=[E5]" sera toujours actif, car si il n'y a rien dans [E5] il n'y aura rien dans [A1] elles seront donc toujours égales.

Je propose plutôt si [E5]>[X1] (cellule [X1] qui sera toujours vide), de cette façon, à la création de la nouvelle page [E5] est vide, [X1] aussi, il ne se passe rien.
Dès que la liste déroulante de [E5] est sollicitée, la valeur de [E5] devient supérieure à [X1] ce qui normalement devrait déclencher MACRO2
Ce que je ne sais pas c'est si les lettres sont comptées comme une valeur qui peut-être supérieure à "rien" ou non.

Si ce n'était pas le cas, je peux:
- associer, dans la "BASE" une colonne chiffrée en fonction du nom de dossier choisi.

En [C5] "LE NOM DU DOSSIER 1" [F5] "1"
En [C6] "LE NOM DU DOSSIER 2" [F6] "2"
En [C7] "LE NOM DU DOSSIER 3" [F5] "3"

- affecter une cellule dans "MODÈLE", disons [A2]qui recevra ce chiffrage en fonction du NOM DE DOSSIER choisit et provoquer ainsi la comparaison entre [A2] et [X1]
if[A2]>[X1] ce qui normalement devrait déclencher "MACRO2"

Voilà, dis moi ce que tu en penses.

PS: dans mon dernier message, MACRO 1 et MACRO 2 étaient des titres et non pas des noms de macros.
Merci quand même pour ce rappel.

Alley, une fois on va bien y arriver, Fieu !
Vieux dicton belge qui traduit une volonté de ne pas se décourager.
On n'a jamais été aussi près de la solution.

Merci encore
Pilou
 

youky(BJ)

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

Re,
si E5 différent de rien . . . . en code macro donne
If [E5]<>""
donc en
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If [E5]<>"" Then 
  Macro2 'execute la macro et reviens pour effacer
   'prévoir effacement E5 de la feuille si modèle
 Application.enabledEvents=false
    Sheets("MODÈLE").[E5]=""   'la feuille ou il y a la liste changée
 Application.enabledEvents=true
End if
End sub

Un fichier exemple m'aiderais bien
Bruno
 

pilou1944

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

OK,

Voici en pièce jointe le dossier avec les cellules nécessaires à ma demande (j'ai seulement supprimé les 12 mois qui ne te seraient d'aucune utilité).

Il comporte 3 encarts (messages)
1) Infos et processus actuel
2) le but à atteindre
3) une proposition

Merci beaucoup,
À bientôt
Pilou.

PS: Peux-tu voir pourquoi je ne peux pas définir la position des commentaires (il s'affichent d'office à droite de la cellule alors que dans les versions précédentes d'Excel, il suffisait de les positionner où l'on voulait les voir apparaître)
et pourquoi celui qui est dans [$G:I$7] de s'ouvre pas complètement ?
Merci encore.
 

Pièces jointes

  • MODELE EXCEL 10.xlsm
    200.3 KB · Affichages: 22
  • MODELE EXCEL 10.xlsm
    200.3 KB · Affichages: 30
  • MODELE EXCEL 10.xlsm
    200.3 KB · Affichages: 27

youky(BJ)

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

Salut Pilou,
Choisit une année et une réf et hop la feuille se crée et je lui supprime des formules et liste validation.
Vois si cela conviens
Bruno
 

Pièces jointes

  • MODELE EXCEL 10.xlsm
    192.9 KB · Affichages: 28
  • MODELE EXCEL 10.xlsm
    192.9 KB · Affichages: 27
  • MODELE EXCEL 10.xlsm
    192.9 KB · Affichages: 26

pilou1944

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

Bonsoir Bruno,
J'ai essayé ta dernière proposition, malheureusement elle ne fonctionne pas ???
Elle à marché une fois et depuis plus rien ?????

Mais elle m'a donné une autre idée alliant tes deux dernières propositions.
Je crois que ce sera la meilleure solution.

Napoléon disait : "un petit dessin vaut mieux qu'un grand discours",
j'ai donc concocté un résumé que je mets en pièce jointe.

Je te remercie encore de ton aide.
Pilou.
 

Pièces jointes

  • Assos 2.docx
    207.5 KB · Affichages: 38

pilou1944

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

Cool Bruno, bonne balade,
je suis impatient de voir ce que tu vas pondre.

A+
Pilou

PS: Je ne l'ai pas précisé dans ma démo, mais bien sûr tu supprimes les formules et listes validations qui, dans la copie, ne servent plus à rien.
 

youky(BJ)

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

Voici avec un peu tard à cause que je me suis endormi devant la télé.
code de l'user en onglet Aide pour facilement le copier
Bruno
 

Pièces jointes

  • MODELEmacro.xlsm
    196.8 KB · Affichages: 20
  • MODELEmacro.xlsm
    196.8 KB · Affichages: 23
  • MODELEmacro.xlsm
    196.8 KB · Affichages: 25

pilou1944

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

Hello Bruno,
rien de tel qu'une bonne balade pour se détendre et faire un bon dodo.
Ceci dit, j'ai pu voir le boulot que tu as fait.
Merci beaucoup, très sympa. Mais ................. !
Tout fonctionne au poil,
Un petit détail que certainement tu vas régler en deux-deux.

Dans le titre de la page, ne s'inscrit pas le texte écrit dans la colonne des abréviations (BASE!M7:21).
Mais une compil de (BASE!I-J-K7:21 + BASE!O7:21).

Pour l'instant, il n'y a que des lettres (pour repères) mais le jour où il y aura en (BASE!I7) le texte -"Association 1 crédit agricole" et en (BASE!O7:21) le N° du compte "0052 3524 257 812", le tire de la feuille risque d'être un peu trop long.

C'est dans cet esprit que j'ai créé une colonne "abréviations".

Autre détail, j'ai fait une petite refonte, de façon à ce que tous les boutons soient identiques.
Pour cela j'ai remplacé mes boutons par des dessins et je leur ai affecté la macro qui leur revenait.

Mon problème réside dans le fait que je ne sais pas comment je peux remplacer les boutons que tu as créés pour les nouvelles lignes.
Je ne sais surtout pas comment leur affecter leur code réciproque ?

Si tu pouvais m'indiquer la marche à suivre SvP

Alley une fois, bonne journey, sais-tu !

Au fait, dans quelle région es-tu, j'ai pas mal randonné dans le sud ouest, (les vallées du Tarn) et dans le Mercantour).

Merci pour tout,
À plus.
 

youky(BJ)

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

Bon,
Si tu mets des dessins voici la nouvelle macro NouvelLigne
Inconvénient des shapes il faut protéger l'onglet car si on déplace le dessin tout plante.
C'est .TopLeftCell.ROW qui me donne le numéro de ligne donc le dessin doit être bien positionné.
Avec les boutons activex pas ce soucis, dommage et je t'avais donné la marche à suivre dans un fichier Aide
Code:
Sub NouvelLigne()
Dim nlig%
ActiveSheet.Unprotect '"toto"
nlig = Feuil3.Shapes(Application.Caller).TopLeftCell.Row
Range("B" & nlig).Resize(1, 13).Insert Shift:=xlDown
    [B2:N2].Copy
    Cells(nlig, 2).PasteSpecial
    Cells(nlig, 2).Select
Application.CutCopyMode = False
ActiveSheet.Protect '"toto"
End Sub
Voici une nouvelle version du fichier selon ta demande
Bruno
 

Pièces jointes

  • MODELEmacro.xlsm
    189.8 KB · Affichages: 23
  • MODELEmacro.xlsm
    189.8 KB · Affichages: 26
  • MODELEmacro.xlsm
    189.8 KB · Affichages: 28

pilou1944

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

Merci Bruno,
Vraiment Tu es super.
La fonction création de dossier est au top
Bon :
Tu me dis que, si l'on déplace le dessin tout plante, mais le dessin, sera forcément déplacé chaque fois que l'utilisateur va créer une nouvelle ligne.
Il ne changera pas de cellule, mais la cellule changera d'adresse ????????,,,,,,

Bon : sinon je vais adapter autre chose.

expl: mettre des boutons de partout et trouver une solution pour leur donner un look personnalisé, spécialement visible.
Je pense que je ne vais pas prendre de risque . Cette solution ne me déplaît pas.
Il me semble que ce dossier sera clôturé sous peu.

Voilà, je vais avoir une autre demande, concernant un autre dossier que prépare mon frère.
Il a créé une usine à gaz, pour faire ses factures et ses devis.
Il bute sur un petit problème d'envoi de documents par mail.
Il voudrait créer une macro qui lui permette d'envoyer ses factures et ses devis par mail avec un simple bouton; si tu es OK, je vais regarder ça de plus prés et je t'en parle sous peu.

Merci encore.
Pilou
 

Discussions similaires

Réponses
3
Affichages
579

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95