Copie de ligne avec formules

Linfernot

XLDnaute Nouveau
Bonjour a tous,
je suis un vrai débutant (juste quelques notions de base).
je voudrais savoir si il est possible dans un tableau déja rempli d'insérer une ligne vide de texte mais avec les formules de la ligne copié en faisant en sorte que une fois remplie les nouveles valeurs soit prise en compte part les ligne suivantes.
exempel :
je m'aperçois que j'ai oublié de rentrer un ticket de caisse du 12/03/10 d'n montant de 10 euros
en sachant que la ligne 8 et du 07/03/10 d'un montant de 11 euros et en cumul avec les premières ligne d'un montant de 121 euros et la ligne 9 du 14/03/10 d'un montant de 10 euros et en cumul avec la ligne 8 d'un montant de 131 euros comment inserer une ligne avec les formules pour que automatiquement il me mette en ligne 10 aprés insertion un montant de 141 euros

Par avance merci...
 

Dranreb

XLDnaute Barbatruc
Re : Copie de ligne avec formules

Bonjour.
Ne vous référez pas directement à la cellule de la ligne précédente, mais à l'aide de DECALER(CelluleDeLaLigne;-1;0)
Ainsi en copiant une ligne puis l'insérant devant elle même, il n'y aura pas d'anomalie, et en supprimant une ligne ça n'entrainera pas d'erreur #REF!: les formule se référeront toujours à la ligne précédente quelle qu'elle soit.

P.S. C'est une technique que j'utilise tellement souvent que je me suis affecté cette macro à un bouton de barre d'outils.
Elle transforme automatiquement toutes références relatives à une autre ligne par des DECALER dans les formules sélectionnées.
VB:
Sub RemplaceRdifParDecaler()
Dim Rg As Range, ZSv As String, Z As String, dL As Long, P As Long, ZC As String, R As Long, Q As Long
For Each Rg In Selection
   ZSv = Rg.FormulaR1C1: Z = ZSv
   Do: P = InStr(Z, "R[")
      If P = 0 Then Exit Do
      Q = InStr(P + 2, Z, "]"): dL = Mid$(Z, P + 2, Q - P - 2)
      Q = Q + 1
      If Mid$(Z, Q, 1) = "C" Then
         ZC = Mid$(Z, Q)
         If Mid$(ZC, 2, 1) = "[" Then
            ZC = Left$(ZC, InStr(3, ZC, "]"))
         Else
            R = 1
            Do
               Q = R + 1
               If Q > Len(ZC) Then Exit Do
               If InStr("0123456789", Mid$(ZC, Q, 1)) = 0 Then Exit Do
               R = Q: Loop
            ZC = Left$(ZC, R)
            End If
      Else
         ZC = ""
         End If
      Z = Replace(Z, "R[" & dL & "]" & ZC, "OFFSET(R" & ZC & "," & dL & ",0)", , 1)
      Loop
   If ZSv <> Z Then If Rg.HasArray Then Rg.CurrentArray.FormulaArray = Z Else Rg.FormulaR1C1 = Z
   Next Rg
End Sub
À +
 
Dernière édition:

Linfernot

XLDnaute Nouveau
Re : Copie de ligne avec formules

Merci pour ta réponse Dranreb, mais ce n'est pas cela, voici un exemple concret avec le vrai tableau excel, mais je ne sais pas comment l'intégret au message, peux tu aussi me renseigner pour cela, par avance merci
 

Dranreb

XLDnaute Barbatruc
Re : Copie de ligne avec formules

Aller en mode avanceé, gérer les pièces jointes.
D'après votre énoncé, ça me semblait bien être ça votre problème pourtant: vous cumulez la ligne précédente avec un montant de celle en cours, et fatalement si vous insérez une nouvelle ligne devant, ça ne se réfèrera pas à la ligne insérée… à moins de s'y référer par DECALER.
 

Linfernot

XLDnaute Nouveau
Re : Copie de ligne avec formules

ok j'ai trouvé pour insérer les PJ donc voici l'exemple, j'aimerai insérer une ligne entre la ligne 9 et la 10 en mettant 10 euros dans la case M de la nouvelle ligne pour que les lignes suivantes prenne en compte les 10 euros
 

Pièces jointes

  • CPT.xlsx
    13.2 KB · Affichages: 61

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 571
Messages
2 089 805
Membres
104 276
dernier inscrit
helenevellocet