VBC excel 2007

qidikizzy Messages postés 12 Statut Membre -  
Bidouilleu_R Messages postés 1209 Statut Membre -
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.
Configuration: excel 2007

2 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    1. qidikizzy Messages postés 12 Statut Membre 1
       
      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
  2. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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