MACRO POUR INSERER UNE LIGNE EXCEL SOUS CONDITION [Fermé]

Signaler
Messages postés
7
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
24 septembre 2018
-
Messages postés
11779
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 août 2020
-
Bonjour à tous,

Je suis novice en macro et j'aurai, SVP, besoin de votre aide pour mettre en place un macro sur 1 fichier EXCEL.

Je dois mettre en place une procédure qui permet de compléter le tableau en automatisant la colonne "A" suivant la quantité indiquée. Par exemple, si la quantité indiquée sur la cellule "A4" est de 6, il faudrait que le système insère automatiquement 6 lignes identiques à la ligne n°4 (1 ligne par matériel), etc....

Je vous remercie pour votre aide

5 réponses

Messages postés
11779
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 août 2020
674
bonjour, à quel moment faudrait-il faire cela?
où les lignes devraient-elles être insérées?
Messages postés
11779
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 août 2020
674 >
Messages postés
7
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
24 septembre 2018

à quel moment faudrait-il insérer ces lignes?
tu peux publier ton fichier sur internet (google drive, cjoint.com, ...), puis partager le lien ici.
Messages postés
7
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
24 septembre 2018
>
Messages postés
11779
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 août 2020

https://www.cjoint.com/c/HIymuLmbwqK

Lien à mon fichier EXCEL
Messages postés
7
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
24 septembre 2018

L'insertion des lignes se fait à chaque fois que la valeur de la quantité (colonne A) est supérieure à la valeur 1.
Messages postés
11779
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 août 2020
674 >
Messages postés
7
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
24 septembre 2018

faut-il mettre la quantité à 0 après insertion des lignes, et peut-être ne pas copier la colonne A?
où les lignes devraient-elles être insérées?
Messages postés
7
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
24 septembre 2018

A mon avis, ne pas copier la colonne A
Messages postés
6868
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
7 août 2020
536
Bonjour,

Faire alt F11 sur la feuille concernée pour accéder à l'éditeur et mettre ce code qui se déclenchera au double clic sur la cellule saisie en colonne A

Option Explicit
Dim ligne As Long
Dim i As Integer
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then 'adapter la colonne
If Target.Value = "" Then Exit Sub 'si vide
If Not IsNumeric(Target) Then Exit Sub ' si pas numérique
ligne = Target.Row
Rows(ligne & ":" & ligne).Select
For i = 1 To Target.Value
 inserer
 Next
End If
End Sub
Sub inserer()
Application.ScreenUpdating = False
    Application.CutCopyMode = False
    Selection.Copy
    Selection.Insert Shift:=xlDown
    Range("A" & ligne + 1) = ""
    Application.ScreenUpdating = True
End Sub



voilà

Messages postés
7
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
24 septembre 2018

Merci CS_Le Pivert,

J'ai bien recopié le code ci-dessous mais quand je renseigne une valeur dans la colonne, il ne se passe malheureusement rien. :(
Messages postés
6868
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
7 août 2020
536
Double clic sur la valeur
Messages postés
11779
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 août 2020
674
suggestion de code (clique à droite sur le nom de la feuille, choisi "Visualiser le code", puis copie le code):
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nombre As Integer, ligne As Range
If Not (Intersect(Target, Me.Columns(1)) Is Nothing) Then
    Application.EnableEvents = False
    Set ligne = Intersect(Target, Me.Columns(1))
    If ligne.Count = 1 Then
        If IsNumeric(ligne) Then
            nombre = ligne
            ligne = ""
            If nombre > 0 Then
                ligne.EntireRow.Copy
                ligne.EntireRow.Offset(1).Resize(nombre).Insert
            End If
        End If
    End If
    Application.EnableEvents = True
    Application.CutCopyMode = False
End If
End Sub
Messages postés
7
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
24 septembre 2018

Ca ne fonctionne pas malheureusement…:(
Messages postés
11779
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 août 2020
674
as-tu changé la quantité dans la colonne A?