Insérer une ligne en conservant les formules

Bonjour à tous,

Je sais que le sujet semble déjà avoir été traité mais je ne trouve pas mon bonheur.

Je m'explique :

J'ai une base de donnée (de gestion du personnel) que j'alimente par formulaire vba. Lorsque j'insère un nouveau salarié, ma macro insère une ligne en tenant compte de l'ordre alphabétique (par nom de famille), donc pas sur la dernière ligne mais entre 2, sauf si mon salarié s'appelle Zorro ! .

Jusqu'ici tout va bien. Mon problème est que sur ma ligne j'ai des cellules avec formule. Notamment en colonne K, j'ai une formule qui me renvoie l'ancienneté du salarié à ce jour en fonction de sa date d'entrée (colonne J) et éventuellement de sa date de sortie (colonne Z).

La formule pour l'ancienneté est la suivante :

=SI(Z2="";DATEDIF(J2;AUJOURDHUI();"y")& SI(DATEDIF(J2;AUJOURDHUI();"y")>1;" ans, ";" an, ") & DATEDIF(J2;AUJOURDHUI();"ym") & " mois, " & DATEDIF(J2;AUJOURDHUI();"md") & SI(DATEDIF(J2;AUJOURDHUI();"md")>1;" jours";" jour");DATEDIF(J2;Z2;"y")& SI(DATEDIF(J2;Z2;"y")>1;" ans, ";" an, ") & DATEDIF(J2;Z2;"ym") & " mois, " & DATEDIF(J2;Z2;"md") & SI(DATEDIF(J2;Z2;"md")>1;" jours";" jour"))

Le probleme est que la formule n'est pas recopiée lors de l'insertion de la ligne (la cellule contenant la formule reste vide)

Merci de vos lumières.

Bonjour

Puisque ton code insére une ligne, tu as le No de ligne, tu peux donc sélectionner la ligne au dessous

l'instruction suivante insère la ligne avec les formules

Selection.Copy

Selection.Insert Shift:=xlDown

Application.CutCopyMode = False

Cordialement

Bonjour,

Lors de l’exécution de ton code copie la cellule qui contient la formule et applique un collage spécial

du genre

Selection.Copy
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
Amadéus a écrit :

Bonjour

Puisque ton code insére une ligne, tu as le No de ligne, tu peux donc sélectionner la ligne au dessous

l'instruction suivante insère la ligne avec les formules

Selection.Copy

Selection.Insert Shift:=xlDown

Application.CutCopyMode = False

Cordialement

Bonjour,

La formule ne fonctionne pas mais j'ai peut-être loupé qqchose.

Mon code insère une ligne mais je ne connais pas le N°, il l'insère selon l'ordre alphabétique du Nom (colonne A).

Voici le code qui insère la ligne :

Private Sub CommandButton1_Click()

Dim Num As Long

With Sheets("bdd")

'Il s'agit d'un nouveau Nom à créer

Num = Range("A65536").End(xlUp).Row + 1

Sheets("bdd").Activate

Range("A" & Num).Value = TextBox1

Range("B" & Num).Value = TextBox2

Range("C" & Num).Value = TextBox7.Value & " " + ComboBox5.Value & " " + TextBox8.Value

Range("AJ" & Num).Value = TextBox7

Range("AK" & Num).Value = ComboBox5

Range("AL" & Num).Value = TextBox8

If OptionButton1.Value = True Then

Range("AH" & Num) = ("Masculin")

Else

If OptionButton2.Value = True Then

Range("AH" & Num) = ("Féminin")

End If

End If

Range("D" & Num).Value = TextBox9

Range("E" & Num).Value = TextBox10

Range("F" & Num).Value = TextBox11

Range("G" & Num).Value = TextBox6

Range("H" & Num).Value = TextBox19

Range("I" & Num).Value = ComboBox6

Range("J" & Num).Value = TextBox15

Range("O" & Num).Value = TextBox23

Range("P" & Num).Value = TextBox24

Range("Q" & Num).Value = ComboBox9

Range("R" & Num).Value = ComboBox10

Range("S" & Num).Value = ComboBox4

If TextBox16 = "" Then

'Pas de valeur saisie, on efface la valeur contenue dans la cellule

Range("T" & Num).ClearContents

Else

'Ecriture de la valeur saisie dans la cellule.

Range("T" & Num).Value = CDate(TextBox16)

End If

Range("U" & Num).Value = TextBox25

Range("V" & Num).Value = TextBox26

Range("W" & Num).Value = TextBox28

Range("X" & Num).Value = ComboBox7

Range("Y" & Num).Value = TextBox18

Range("Z" & Num).Value = TextBox16

Range("AE" & Num).Value = TextBox21

Range("AF" & Num).Value = TextBox22

Range("AG" & Num).Value = ComboBox1

Range("AD" & Num).Value = ComboBox15

Range("A2:AZ1000").Sort Key1:=Range("A2"), Order1:=xlAscending

MsgBox "Le nouvel agent a bien été crée !"

End If

Unload Me

End With

End Sub

Merci d'avance


SylChat a écrit :

Bonjour,

Lors de l’exécution de ton code copie la cellule qui contient la formule et applique un collage spécial

du genre

Selection.Copy
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

Bonjour SylChat,

J'ai essayé ce code mais ça ne fonctionne pas. Ou le mettre dans mon code.

Merci d'avance.

rebonjour ,

ce code est fait pour copier la formule depuis une cellule qui contient ta formule à copier donc ce code peu intervenir apres le remplissage des cellules

Bonjour Amadéus et SylChat,

Merci de votre aide, mais cela ne fonctionne pas ou bien je ne dois pas mettre ce bout de code au bon endroit.

Pouvez-vous m'éclairer sur ce point. Ou dois-je insérer ce code dans ma macro.

Merci encore de votre aide

Bonjour,

Peux tu joindre le fichier afin que l'on puisse t'aider plus efficacement

bonne journée

Bonjour SylChat,

Merci de ton aide. Ci-joint le fichier.

Cordialement.

107test.rar (78.77 Ko)

Bonjour,

Tu es sous Excel 2007. Tu peux donc déclarer ta BDD en tableau.

A l'aide de ton formulaire, tu effectues l'insertion d'un nouveau salarié en dernière position.

Les formules seront automatiquement reportées sans aucune manipulation..

Tu termines par un tri à ta convenance.

Tes macros se limitent donc à la saisie des infos.

A te relire.

Cdlt

Bonjour Jean Eric,

Mon pb c'est que la fiche que je crée insere une ligne dans l'ordre alphabétique (si je crée une fiche BERNARD, elle s'insèrera entre ANDRE et DUPONT), et non pas en dernier.

Merci.

Rechercher des sujets similaires à "inserer ligne conservant formules"