VBC excel 2007

Fermé
qidikizzy Messages postés 11 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 10 août 2010 - 21 sept. 2009 à 16:52
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 22 sept. 2009 à 12:08
Bonjour,

La référence de mes formules change toute seule, je ne sais pas pourquoi.

En effet, j'ai une feuille de calcul de la colonne A à X. Les colonnes A à J sont une base de données qui se fait automatiquement par mon macro de copier-coller à partir des autres fichiers. Les colonnes K à X sont les calcules effectués à partir de cette base de données. Par exemple : K2 est un résultat de calcule de A2.

Le problème vient quand je relance le macro de copier-coller pour enchérir ma base de données. Pour l'exemple précédant, K2 sera un résultat de calcule de A54 au lieu de A2.

Quelqu'un a une idée pourquoi ça change tout seul? Est-ce qu'il y a une solution? (je ne peux pas mettre $A$2 dans mon formul car fallait que ca incrémente sur la colonne).

Merci d'avance.
A voir également:

2 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
22 sept. 2009 à 10:02
Bonjour,

Le problème vient quand je relance la macro de copier-coller pour enchérir ma base de données. Pour l'exemple précédant, K2 sera un résultat de calcule de A54 au lieu de A2.
Quelqu'un a une idée pourquoi ça change tout seul? Est-ce qu'il y a une solution? (je ne peux pas mettre $A$2 dans mon formul car fallait que ca incrémente sur la colonne).


1) le problème vient donc de ta macro copier/coller (il y a sans doute une insertion de colonne et cela affecte
la formule.

Sans voir la macros difficile à dire ce qui se passe exactement.

2) je ne peux pas mettre $A$2 dans mon formul car fallait que ca incrémente sur la colonne)

( mais tu peux l'écrire dans la macro.... ) En utilisant l'enregistreur de macro .
Cela aurait quelques avantages - risque d'oubli,d'erreurs,et sauvegarde de la formule.
Avec plus de précision sur ta macro quelqu'un t'en diras plus.
0
qidikizzy Messages postés 11 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 10 août 2010 1
22 sept. 2009 à 10:15
merci déjà pour le message. Mon programme de copier-coller est en-dessous, donc il s'agit de copier la feuille "Saisie" de classeur "Chevalier Stephane" à la feuille "base de données" de "Patrick".

Dim derlig1 As Long

Windows("CHEVALIER STEPHANE.xlsm").Activate
derlig1 = Range("Saisie!A1048576").End(xlUp).Row
Sheets("Saisie").Select
Range("A3:J" & derlig1).Select
Selection.Copy
Windows("Patrick.xlsm").Activate
Sheets("base de donnees").Select
Range("A2").Select
Selection.Insert Shift:=xlDown
Range("A2:J1048576").Select
Application.CutCopyMode = False
Selection.UnMerge
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Je n'arrive pas à voir où est le problème. Si qq'un a une idée, ne pas hésiter de laisser un massage.

Merci d'avance.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
22 sept. 2009 à 12:08
Voilà une proposition.... on peut améliorer
mais je souhaite que tu comprennes

Sub test()


Windows("CHEVALIER STEPHANE.xlsm").Activate

Sheets("Saisie").Select ' on sélectionne la feuille Saisie
derlig1 = Range("Saisie!A1048576").End(xlUp).Row ' On enregistre le n° de la dernière ligne

Range("A3:j" & derlig1).Select ' on selectionne une plage A à J ... c'est là le premier problème
Selection.Copy
Windows("Patrick.xlsm").Activate ' on va sur le deuxième classeur

Sheets("base de donnees").Select ' on se place sur la feuille sur la cellule A2
' Là tu faisait une insertion de la plage A:J

Range("A2").Select
Selection.End(xlDown).Offset(1, 0).Select On va au bout de la base
' de cette manière on ne touche pas aux formules
Selection.Insert Shift:=xlDown ' ici on insère la plage A:J

' Ici tu peux Recopier les formules déjà présente sur la feuille ou le faire à la main
' puis faire le tri sur A:J on ne touche pas au reste

Range("A2:J1048576").Select
Application.CutCopyMode = False
Selection.UnMerge


Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal



End Sub

A+ si besoin tu dis.
0