Probleme de correction automatique

Signaler
Messages postés
38
Date d'inscription
mardi 17 mars 2009
Statut
Membre
Dernière intervention
17 juin 2011
-
Messages postés
38
Date d'inscription
mardi 17 mars 2009
Statut
Membre
Dernière intervention
17 juin 2011
-
Bonjour,
Je galere toujours avec le programme que je crée ( merci car en parti codé grace a vous tous)
Les Lignes de mon tableau s'incréménte automatiquement grace a la fonction xl1up
Or si je fais une erreur lors de mes saisies, si je la corrige directement dans le tableau les calculs ne s'effectue pas. Si j'efface la ligne et que je ressaisie grace à ma userform celle ci se place à la fin et dons crées des erreurs.

Y a t il un moyen de pouvoir corriger la ligne sans perdre l'automatisation des calculs ni la place de la ligne ?

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

"si je la corrige directement dans le tableau les calculs ne s'effectue pas"
Pas assez précis. Appuie sur F9 pour demander un recalcul manuellement.

"Si j'efface la ligne et que je ressaisie () celle ci se place à la fin"
C'est quoi ta fonction xl1up ?
Fonction perso ?
Que fait-elle et avec quelle méthode ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
38
Date d'inscription
mardi 17 mars 2009
Statut
Membre
Dernière intervention
17 juin 2011

Je me précise : j'ai un tableau qui se rempli ligne aprés ligne grace à une useform.
La dernière ligne est une ligne TOTAL. Comme je ne connais pas à l'avance le nombre de ligne renseignée j'ai ce code :
With Sheets("EDF")
    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("D" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("D" & Tot.Row - 1) = CDbl(TextBox3.Text) 'saisie du texte dans col D
    
    .Range("E" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("E" & Tot.Row - 1) = .Range("D" & Tot.Row - 1) / .Range("D6") 'calcul ratio col E
    
    .Range("F" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("F" & Tot.Row - 1) = .Range("D" & Tot.Row - 1) / .Range("C" & Tot.Row - 1) 'calcul ratio dans col F
    
    .Range("G" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    If TextBox8.Text = "" Then
    .Range("G" & Tot.Row - 1) = "N.C."
    Else
    .Range("G" & Tot.Row - 1) = CDbl(TextBox8.Text)  'saisie du texte dans col G
    End If
    
    .Range("H" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    If TextBox8.Text = "" Then
    .Range("H" & Tot.Row - 1) = ""
    Else
    .Range("H" & Tot.Row - 1) = .Range("D5") - .Range("G" & Tot.Row - 1) 'calcul difference dans col H
    End If
    
    .Range("L" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("L" & Tot.Row - 1) = .Range("M" & Tot.Row - 1).Offset(-1, 0) 'reprend cellule M dans col L
    
    .Range("M" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("M" & Tot.Row - 1) = CDbl(TextBox4.Text) 'saisie du texte dans col M
    
    .Range("N" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("N" & Tot.Row - 1) = .Range("M" & Tot.Row - 1) - .Range("L" & Tot.Row - 1) 'calcul conso hhp N
    
    .Range("O" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("O" & Tot.Row - 1) = .Range("P" & Tot.Row - 1).Offset(-1, 0) 'reprend cellule P dans col O
    
    .Range("P" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("P" & Tot.Row - 1) = CDbl(TextBox5.Text) 'saisie du texte dans col P
    
    .Range("Q" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("Q" & Tot.Row - 1) = .Range("P" & Tot.Row - 1) - .Range("O" & Tot.Row - 1) 'calcul conso hhc dans col Q
    
    .Range("R" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("R" & Tot.Row - 1) = "" 'blanc dans col R
    
    .Range("S" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
     If TextBox6.Text <> "" Then
    Range("S" & Tot.Row - 1) = TextBox4.Text
     Else
       .Range("S" & Tot.Row - 1) = TextBox6.Text
     End If
 
    
    .Range("T" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    If TextBox6.Text = "" Then
    Range("T" & Tot.Row - 1) = ""
    Else
    .Range("T" & Tot.Row - 1) = CDbl(TextBox6.Text) 'saisie du texte dans col T
    End If
    
    
    .Range("U" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("U" & Tot.Row - 1) = .Range("T" & Tot.Row - 1) - .Range("S" & Tot.Row - 1) 'calcul conso hep dans col U
    
    .Range("V" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    If TextBox7.Text <> "" Then
    Range("V" & Tot.Row - 1) = TextBox5.Text
     Else
       .Range("V" & Tot.Row - 1) = TextBox7.Text
     End If
 
    
    .Range("W" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    If TextBox7.Text = "" Then
    Range("W" & Tot.Row - 1) = ""
    Else
    .Range("W" & Tot.Row - 1) = CDbl(TextBox7.Text) 'saisie du texte dans col T
    End If
    
    .Range("X" & Tot.Row - 1).Insert Shift:=xlDown 'inserer ligne au dessus
    .Range("X" & Tot.Row - 1) = .Range("W" & Tot.Row - 1) - .Range("V" & Tot.Row - 1) 'calcul conso hec dans col X
qui me permet d'incrémenter mes lignes entre la ligne de titre et la ligne total.

Or si je me trompe sur une donnée de mon tableau il faut que je puisse la corriger, or si je clique sur la cellule ou il y a l'erreur et que je modifie le chiffre érroné, les calculs entrés dans mon programme ne se font pas automatiquement, ni en actualisant la page. C'est la que je séche...