Insérer une ligne lorsqu'une cellule est rempli

  • Initiateur de la discussion Initiateur de la discussion Jonconor
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Jonconor

Guest
Bonjour !
J'ai un petit souci sur mon tableau. Je remplis des devis qui sont différents à chaque fois, et pour plus de flexibilité, je regroupe les différents composants à travers 4 rubriques (Personnel, camions, engins et autre). Comme je n'ai quasiment jamais les mêmes composants, j'aimerai pouvoir faire mon devis pas à pas.
Donc ma question est la suivante : Existe-il un moyen d'insérer une ligne automatiquement lorsque la cellule est remplie, et de remettre la liste déroulante ?
Ci-joint, un petit tableau avec le point de départ et le résultat voulu.
 

Pièces jointes

Re : Insérer une ligne lorsqu'une cellule est rempli

REbonjour, sorry du double post...

J'ai un autre souci : je veux incorporer des RECHERCHEV qui mettront automatiquement l'unité et le prix, mais la formule n'est pas dupliquée lors de l'insertion de la ligne, est-ce normal ?

Cordialement
 
Re : Insérer une ligne lorsqu'une cellule est rempli

Bonjour à tous,
J'ai repris la macro de mon voisin PierreJean qui est plus minutieuse que la mienne.
En supposant qu'il y a toujours la formule RechechV en D4.

Bruno
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
  On Error Resume Next
    x = Target.Validation.Type
    If Err.Number = 0 Then
      Rows(Target.Row + 1).Insert Shift:=xlUp
     [COLOR="Red"][B] Cells(Target.Row, 4).Formula = [D4].Formula[/B][/COLOR]  
     [COLOR="Red"][B] Cells(Target.Row, 3).Formula = [D3].Formula[/B][/COLOR]  

 Else
      On Error GoTo 0
      Exit Sub
    End If
  On Error GoTo 0
End If
End Sub
 
Dernière édition:
Re : Insérer une ligne lorsqu'une cellule est rempli

Bonsoir, j'ai essayer ta version youki, et en gardant recherchev en D4, lorsque je déroule la liste en A4 pour sélectionner, je garde bien la formule en D4, mais cela ne la copie pas dans la nouvelle ligne et m'efface la cellule C4 : Est-ce possible de pouvoir recopier la formule ? A terme, le tableau aura 1 ou 2 colonnes en plus, 2 cellules avec des recherchesV, et 1 ou deux avec des sommes. Est-il possible de copié ces formules dans les nouvelles lignes insérées ?
 
Dernière modification par un modérateur:
Re : Insérer une ligne lorsqu'une cellule est rempli

Petite rectif,
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
  On Error Resume Next
    x = Target.Validation.Type
    If Err.Number = 0 Then
      Rows(Target.Row + 1).Insert Shift:=xlUp
      Cells(Target.Row, 4).Formula = [D4].Formula
      Cells(Target.Row, 3).Formula = [C4].Formula

 Else
      On Error GoTo 0
      Exit Sub
    End If
  On Error GoTo 0
End If
End Sub

ou encore une autre façon de faire

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Target.Count > 1 Then Exit Sub
  On Error Resume Next
    x = Target.Validation.Type
    If Err.Number = 0 Then
Application.EnableEvents = False
      Rows(Target.Row + 1).Insert Shift:=xlUp
      Cells(Target.Row, 3) = Application.VLookup(Cells(Target.Row, 1), [Donnée!A1:D1000], 2, False)
      Cells(Target.Row, 4) = Application.VLookup(Cells(Target.Row, 1), [Donnée!A1:D1000], 3, False)
Application.EnableEvents = True
 Else
      On Error GoTo 0
     Exit Sub
    End If
End Sub

Bruno
 
Dernière édition:
Re : Insérer une ligne lorsqu'une cellule est rempli

Bonsoir, j'ai enfin pu tester tes versions après quelques jours d'intense et dur labeur, et lorsque je les essaye, je ne vois pas de différence, est-ce normal ? C'est peût-être impossible ?
 
Re : Insérer une ligne lorsqu'une cellule est rempli

Bonsoir,
Ce code à l'avantage d'éviter de rentrer la formule, on écrit direct le résultat
Cells(Target.Row, 3) . . . . .le 3 est le N° de colonne
VLookUp est l'équivalent de . . . RecherchV
[Donnée!A1😀1000], 2, False) . .onglet Donnée et tableau comme la formule
Aussi si tu as des plantages en cours de macro en fenetre exécution copie cette ligne et valide par entrer
Application.EnableEvents = True
à false on neutralise les événements afin d'écrire sans que la macro recommence.
Bruno
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub
If Target.Count > 1 Then Exit Sub
  On Error Resume Next
    x = Target.Validation.Type
    If Err.Number = 0 Then
Application.EnableEvents = False
      Rows(Target.Row + 1).Insert Shift:=xlUp
      Cells(Target.Row, 3) = Application.VLookup(Cells(Target.Row, 1), [Donnée!A1:D1000], 2, False)
      Cells(Target.Row, 4) = Application.VLookup(Cells(Target.Row, 1), [Donnée!A1:D1000], 3, False)
Application.EnableEvents = True
 Else
      On Error GoTo 0
     Exit Sub
    End If
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

N
Réponses
2
Affichages
2 K
Nicolaij74
N
F
Réponses
4
Affichages
781
L
Réponses
6
Affichages
2 K
A
Réponses
0
Affichages
2 K
azerty1956
A
Retour