Solution plus simple sur insertion de lignes.

Toushusss

XLDnaute Nouveau
Bonjour !
J'utilise ce code pour inserer automatiquement une ligne dans mon tableau.
Code:
ligne = .Range("B" & .Rows.Count).End(xlUp).Row
    Set Tot = .Range("b11:b" & ligne).Find("TOTAL")
    
    .Range("A" & Tot.Row).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("A" & Tot.Row) = TextBox1.Text 'saisie date dans col A
    
    .Range("B" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("B" & Tot.Row - 1) = "" 'blanc dans col B
    
    .Range("C" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("C" & Tot.Row - 1) = CDbl(TextBox2.Text) 'saisie du texte dans col C
    .Range("C" & Tot.Row).Formula = "=Sum(C9:C" & Tot.Row - 1 & ")" 'somme de C9 jusqu'à la dernière cellule ajoutée
    .Range("C" & Tot.Row).Font.Bold = True

Cela fait en sorte que chaque saise viennent se mettre enttre ma ligne de titre et la ligne total de mon tableau.

Cependant n'y aurait il pas plus simple. N'existe t il pas une fonction qui permette directement cela. Merci
 

Softmama

XLDnaute Accro
Re : Solution plus simple sur insertion de lignes.

Bonjour,

Si j'ai bien compris, ceci à tester :
Code:
    TotR = .Range("b11:b" & ligne).Find("TOTAL").row
   
    .Range("A" & TotR & ":C" & TotR).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("A" & TotR - 1) = TextBox1.Text 'saisie date dans col A
    .Range("B" & TotR - 1) = "" 'blanc dans col B
    .Range("C" & TotR - 1) = CDbl(TextBox2.Text) 'saisie du texte dans col C
    .Range("C" & TotR).Formula = "=Sum(C9:C" & TotR - 1 & ")" 'somme de C9 jusqu'à la dernière cellule ajoutée
    .Range("C" & TotR).Font.Bold = True
 

Dranreb

XLDnaute Barbatruc
Re : Solution plus simple sur insertion de lignes.

Bonjour.
Si: une seule insertion serait bien
l'insersion d'une ligne entière par exemple.
Si pas possible à cause d'autres informations à coté du tableau
VB:
.Range("A:B").Rows(Tot.Row).Insert Shift:=xlDown
À+
 

Toushusss

XLDnaute Nouveau
Re : Solution plus simple sur insertion de lignes.

Merci pour vos réponse.
Justement je cherche à eliminer le fait de définir ma cellule total ( Tot.Row).
N'existe t il pas un moyen par exemple de faire en sorte que chaque sasie s'incremente entre la ligne 9 et la ligne 10 par exempel.( autrement dit je fait une saisie dans mes textBox et cela l'ajoute ligne 10 , la ligne précédément en 10 devient ligne 11 , je fais une autre saisie celle ci vient se placer en ligne 11, la ligne précédemment en 11 devient ligne 12....)
 

Dranreb

XLDnaute Barbatruc
Re : Solution plus simple sur insertion de lignes.

Dans ce cas donnez un nom à votre Plage
Copiez sa dernière ligne devant elle même et modifiez la nouvelle dernière ligne.
Ou bien donnez un nom à la ligne devant laquelle vous voulez toujours insérer: lorsqu'on insère devant, la référence d'une plage nommée est corrigée en conséquence automatiquement.
À+
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Solution plus simple sur insertion de lignes.

Je vous ai surtout parlé d'Excel, pas de VBA.
Insertion, Noms, Définir...
Les noms ainsi définis peuvent avantageusement remplacer les adresses de cellules aussi bien dans les formules que dans VBA. vous appelez "Toto" toute la ligne 11, au lieu de Active.Sheet.Rows(11).Insert vous écrirez ActiveSheet.[Toto].Insert et Toto se retrouvera automatiquement défini en ligne 12.
Auparavant vous notez L = ActiveSheet.[Toto].Row pour avoir la ligne où vous devrez écrire des informations après l'Insert.
À+
 
Dernière édition:

Toushusss

XLDnaute Nouveau
Re : Solution plus simple sur insertion de lignes.

J'ai renommé toute ma ligne " Toto"
Par contre je ne vois quoi remplacer dans mon code par ce que vous marquez. Désolé mais je m'embrouille. Dans le code que j'ai mis au début je ne retrouve pas ce que vous me marquez. Je m'excuse d'être un boulet mais je voudrais vraiment comprendre comment marche se processus d'insertion de ligne.
 

Dranreb

XLDnaute Barbatruc
Re : Solution plus simple sur insertion de lignes.

VB:
Dim F As Worksheet, L As Long
Set F = ActiveSheet
L = F.[Toto].Row
F.[Toto].Rows(L).Insert
F.Cells(L, 1).Value = TextBox1.Text 'saisie date dans col A
F.Cells(L, 2).Value = "" 'blanc dans col B
F.Cells(L, 3).Value = CDbl(TextBox2.Text) 'saisie du texte dans col C
et à la colonne C de Toto mettez uine bonne fois pour toutes :
Code:
=SOMME(C$9:DECALER(C???,-1,0))
Avec les ??? remplacé par le numéro de ligne où elle se trouve actuellement, évidemment.
À+
 

Dranreb

XLDnaute Barbatruc
Re : Solution plus simple sur insertion de lignes.

Ah si, normalement il doit insérer une ligne devant la Toto et décaler celle ci vers le bas !
Si vous voulez décaler toutes les saisies précédentes vous n'avez qu'a insérer systématiquement devant la deuxième ligne de votre tableau une copie de la première, puis retoucher celle ci !
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 440
Messages
2 088 452
Membres
103 854
dernier inscrit
linzei