XL 2013 Insertion de ligne en fonction de deux conditions

momo

XLDnaute Occasionnel
Bonjour à tous,

Je voudrais solliciter votre concours pour m'aider à compléter une macro que Job m'avait aidé en 2016 à réaliser

Je voudrais ajouter à sa macro une deuxième condition qui selon la valeur d'un cellule se déclenchera automatiquement pour créer le nombre de ligne voulu et supprimer les lignes insérées lorsque l'on change la valeur de la cellule.

En espérant votre retour sur la question
 

Pièces jointes

  • Insertion et suppression de lignes par tableaux VBA(2).xlsm
    27.3 KB · Affichages: 24

job75

XLDnaute Barbatruc
Bonjour momo,

Il suffit d'ajouter un test dans la macro InsererLignes :
Code:
If t(i, 3) = "Variable" And IsNumeric(ref(i, 1)) Then
et de coller cette macro dans la 1ère feuille (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [C:C]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
SupprimerLignes
InsererLignes
Application.EnableEvents = True
End Sub
Fichier (3).

PS : votre fichier était vérolé par une feuille VBA parasite, je l'ai refait.

A+
 

Pièces jointes

  • Insertion et suppression de lignes par tableaux VBA(3).xlsm
    30.9 KB · Affichages: 25

momo

XLDnaute Occasionnel
Bonjour momo,

Il suffit d'ajouter un test dans la macro InsererLignes :
Code:
If t(i, 3) = "Variable" And IsNumeric(ref(i, 1)) Then
et de coller cette macro dans la 1ère feuille (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [C:C]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
SupprimerLignes
InsererLignes
Application.EnableEvents = True
End Sub
Fichier (3).

PS : votre fichier était vérolé par une feuille VBA parasite, je l'ai refait.

A+

Merci Job! C'est exactement le résultat escompté!
 

momo

XLDnaute Occasionnel
Bonjour Job

Un petit soucis avec la macro d'hier , elle change les formules existant dasn les autres plages de mon fichier réel

=SIERREUR(RECHERCHEH($J11;PERIOD;2;FAUX);0)

devient après mis à jour de la macro

=SIERREUR(RECHERCHEH(RC10;PERIOD;2;FAUX);0)
 

job75

XLDnaute Barbatruc
Bonjour momo, le forum,

Effectivement puisque l'on mémorise les formules en notation R1C1 il faut préciser :

- en fin de InsererLignes => If n Then [A2].Resize(n, 8).FormulaR1C1 = rest

- dans SupprimerLignes => If n Then [A2].Resize(n, 8).FormulaR1C1 = t

Avec uniquement des références relatives il n'y avait pas de problème car alors VBA ne peut pas se tromper.

A+
 

momo

XLDnaute Occasionnel
Bonjour momo, le forum,

Effectivement puisque l'on mémorise les formules en notation R1C1 il faut préciser :

- en fin de InsererLignes => If n Then [A2].Resize(n, 8).FormulaR1C1 = rest

- dans SupprimerLignes => If n Then [A2].Resize(n, 8).FormulaR1C1 = t

Avec uniquement des références relatives il n'y avait pas de problème car alors VBA ne peut pas se tromper.

A+
Bonsoir Job

je sollicite votre aide pour une ultime apport à la macro Ô combien complète que vous m'avez aidé à faire.
Je voudrais que la recopie entière des ligne ne se fasse plus
Ceci parce que manuellement je remplis certaines colonnes d'information différentes et lorsque la macro s'actualise , elle efface logiquement les données manuelles que j'ai écrites
Je vous remercie par avance
Bonne fin de soirée
 

Discussions similaires

Statistiques des forums

Discussions
314 634
Messages
2 111 435
Membres
111 136
dernier inscrit
Ahmad Ibnou