XL 2016 insérer ligne avec formule suivant plage

TREM

XLDnaute Nouveau
Bonjour à tous,


Je souhaiterais modifier :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect([A:A], Target) Is Nothing Then
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromleftOrBelow
ActiveCell.FormulaR1C1 = "21CC0"
End If
If Not Intersect([AQ:AQ], Target) Is Nothing Then Target.Value = IIf(Target.Value = "", "Soldé", "")
Cancel = True
End Sub

pour qu'il recopie les formules à l'insertion.


J'ai bien vu le post :

mais là, je n'arrive pas à délimiter une plage de colonnes pour qu'en intégrant :

If Not Intersect([AQ:AQ], Target) Is Nothing Then Target.Value = IIf(Target.Value = "", "Soldé", "")

ça ne génère pas une nouvelle ligne à son tour


Merci pour votre aide

Cordialement
 

Rouge

XLDnaute Impliqué
Bonjour,

Votre demande n'est pas claire:
Si on fait un double-clic sur une cellule de la colonne A, il y a bien une insertion de ligne suivi du remplissage de la nouvelle cellule A avec "21CC0", c'est une valeur, pas une formule. Où sont les formules?
Si on fait un double-clic sur une des cellules de la colonne AQ et si la cellule est vide, cela affiche "Soldé" sinon rien. ici il n' y a pas d'insertion de ligne.

Donc, comprend pas où se situe le problème.
Pourriez-vous reformuler votre demande, peut-être accompagnée d'un bout de fichier en exemple si possible.

Cdlt
 

TREM

XLDnaute Nouveau
Bonjour Rouge,


La formule est en H
La colonne AQ (déplacé en K dans le fichier joint) affiche "Soldé" au double clic
mais régénère une nouvelle ligne (ce que je ne souhaite pas)

C'est pourquoi, je voudrais limiter l'action du double clic de la première partie du code (de job 75)
qui insère la ligne avec formule + remplissage de la nouvelle cellule A avec "21CC0"
à une plage : A:A ou les 3 premières colonnes de la feuille

Ainsi la colonne H permettrait de solder / désolder sans insérer de ligne supplémentaire


Cordialement
 

Pièces jointes

  • 210110_xld.xlsm
    54 KB · Affichages: 11

TREM

XLDnaute Nouveau
Je ne sais pas, j'ai copier le code de job75 du post https://www.excel-downloads.com/threads/inserer-une-ligne-en-gardant-les-formules.20019145/

J'ai bricolé le code :
  • j'ai délimité la plage
  • 2) la colonne affiche "soldé" au double clic et n'insère plus de nouvelle ligne
mais
  • ça prend + 10 secondes en A:A pour insérer la nouvelle ligne
  • et quand je solde ou dé-solde en k:k ça efface ligne au dessus ...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
On Error Resume Next
If Not Intersect([a:a], Target(1)) Is Nothing Then
Target(1).EntireRow.Insert
End If
With Target(-1, 1).EntireRow
.Copy .Rows(2) 'copier-coller
.Rows(2).SpecialCells(xlCellTypeConstants) = ""
End With
If Not Intersect([a:a], Target) Is Nothing Then
ActiveCell.FormulaR1C1 = "21CC0"
End If
Application.ScreenUpdating = False
If Not Intersect([k:k], Target) Is Nothing Then Target.Value = IIf(Target.Value = "", "Soldé", "")
Cancel = True


End Sub
 

TREM

XLDnaute Nouveau
C'est bon, ça marche après adaptation du code de Philippe du post précédemment cité :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A8:A" & Range("A65535").End(xlUp).Row)) Is Nothing Then
Cancel = False
Rows(Target.Row).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cancel = True
End If
If Not Intersect([a:a], Target) Is Nothing Then
ActiveCell.FormulaR1C1 = "21CC0"
End If
If Not Intersect([AQ:AQ], Target) Is Nothing Then Target.Value = IIf(Target.Value = "", "Soldé", "")
Cancel = True
End Sub

Merci Rouge, pour l’attention que vous avez portée à ma demande
 

Discussions similaires