Copie de formule qui ne retrouve pas ses références

Bonjour à toutes et à tous

Je travail avec Excel 2003 sous VISTA

Pour faire simple, dans mon tableau quand je place un caractère sur une ligne dans une

case (PANO,TELE1,TELE2,RX ATM TOMO ATM,TOMO MAND MAX, ou POIGNET), de C19 à I19 pour la première ligne il rajoute la valeur associée de mon tableau de référence situé en haut à gauche et fait le total en I19 toujours en ce qui concerne la première ligne.

Quand je rajoute une ligne avec le bouton "Rajout ligne', voir code associé,

Private Sub CommandButton1_Click()
'Macro pour bg - XL Pratique le 20/03/08 - Dan
Dim Ligne As Integer
Dim i As Byte
Ligne = Range("A65536").End(xlUp).Row
Range("A" & Ligne).EntireRow.Insert
Range("Ligne_Matrice").Copy Destination:=Range("A" & Ligne)
For i = 3 To 10
With Range("A" & Ligne)
If i < 10 Then
.Offset(1, i - 1).FormulaR1C1 = "=COUNTA(R19C:R[-1]C)"
Else: .Offset(1, i - 1) = "=SUM(R19C:R[-1]C)"
End If
End With
Next
End Sub

tous se passe bien sauf que il ne devrait pas rajouter les valeurs en C12 et C13 s'il n'y a aucun caractère dans les cellules de C19 à I19 (toujours en prenant l'exemple de la première ligne.

=SI(ESTVIDE($C3);;$L3+$C$5)+SI(ESTVIDE($D3);;$L3+$C$6)+SI(ESTVIDE($E3);;$L3+$C$7)+SI(ESTVIDE($F3);;$L3+$C$8)+SI(ESTVIDE($G3);;$L3+$C$9)+SI(ESTVIDE($H3);;$L3+$C$10)+SI(ESTVIDE($I3);;$L3+$C$11)+SI(NBVAL(#REF!)=0;0;$C$12+$C$13)

Bien entendu il devrait faire cela pour toutes les lignes rajoutées après.

Voici mon tableau : https://www.excel-pratique.com/~files/doc/4nQ11Exemple_Copie.xls

J'aimerais aussi avoir votre avis sur le problème suivant :

Lorsque les valeurs de mon tableau de référence changent, toutes les valeurs du

tableau de calcul sont modifiés et donc les résulats changent.

Je voudrais que les claculs des lignes précédentes au changement ne bougent pas et

continuer avec cette fois-ci les nouvelles valeurs. :

Merci beaucoup pour vos éclaircissements

Bonjour

ta macro recopie

la zone nommée "Ligne_matrice" située de R3 à AD3

et c'est dans cette zone (en AD3) que se situe ta formule qui contient une erreur

#REF!

remplace (ou corrige) cette formule de la façon suivante (si j'ai tout compris ce que tu veux faire)

=SI(ESTVIDE($C3);;$L3+$C$5)+SI(ESTVIDE($D3);;$L3+$C$6)+SI(ESTVIDE($E3);;$L3+$C$7)+SI(ESTVIDE($F3);;$L3+$C$8)+SI(ESTVIDE($G3);;$L3+$C$9)+SI(ESTVIDE($H3);;$L3+$C$10)+SI(ESTVIDE($I3);;$L3+$C$11)+SI(NBVAL($C3:$I3)=0;0;$C$12+$C$13)

Ceci devrait corriger l'erreur des 6.33€

Édition par Mytå, pour désactiver les smilies dans ce message

Il est normal qu'Excel recalcule les données.

Pour quelles ne soient plus modifiées, il faut remplacer la formule de calcul par son résultat.

Ce que peut faire la macro si tu lui ajoute le code suivant

Après Next

If Ligne > 20 Then

Range("M" & Ligne - 1).Copy

Range("M" & Ligne - 1).PasteSpecial Paste:=xlPasteValues

End If

avant End Sub

Le formule de calcul en colonne M de l'avant dernière ligne de saisie, est remplacée par son résultat (la derniére ligne de saisie est celle ajouté par la macro)

Cordialement

Merci Demed

Pour la première solution, je n'ai plus de 6,33 automatique mais bien un 0 quand

il n'y a aucun caractère sur les cases précédentes.

Pour la deuxième partie, en fait, dès que je fais un rajout, impossible d'effectuer un

calcul car la formule a disparue (ça c'est bon pour les calcules précédants).

Je pensais à la détection d'une modification des valeurs dans le tableau de référence,

la création d'une ligne sous total et ensuite la continuation des calcules sur les nouvelles lignes avec les nouvelles valeurs.

Merci de tous tes efforts

Rechercher des sujets similaires à "copie formule qui retrouve pas references"