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 Subtous 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