IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA - Problème d'insertion de ligne avec copie de formules [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut VBA - Problème d'insertion de ligne avec copie de formules
    Bonjour à tous,

    Voici le problème pour lequel je sollicite SVP votre aide :

    1 - Dans les cellules suivantes (A2 à B100) j'ai une formule du type (bien évidemment il y a en plus d'autres cellules utilisées sur chaque ligne) :

    A2 --> =SI(A2=A1;FaireCalcul_1;FaireCalcul_2) B2 --> =A2+C2
    A3 --> =SI(A3=A2;FaireCalcul_1;FaireCalcul_2) B3 --> =A3+C3
    A4 --> =SI(A4=A3;FaireCalcul_1;FaireCalcul_2) B4 --> =A4+C4
    A5 --> =SI(A5=A4;FaireCalcul_1;FaireCalcul_2) B5 --> =A5+C5
    " "
    " "
    A100 --> =SI(A100=A99;FaireCalcul_1;FaireCalcul_2) B100 --> =A100+C100

    2 - Pour insérer une ligne j'utilise la procédure suivante (appelée depuis un simple bouton) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub InsèreCopieLigne()
              ActiveCell.EntireRow.Insert
              Rows(ActiveCell.Row + 1).Copy Rows(ActiveCell.Row)
              On Error Resume Next
              Rows(ActiveCell.Row).SpecialCells(xlCellTypeConstants,  23).ClearContents
            End Sub
    3 - Si maintenant j'insère par exemple une ligne entre les cellules A3 et A4, à l'aide de ma procédure : plus rien ne va !
    En effet je constate qu'un décalage se crée dans les références, ce qui perturbe toute la logique mise en place initialement. Voilà les "dégats" :

    A2 --> =SI(A2=A1;FaireCalcul_1;FaireCalcul_2) B2 --> =A2+C2
    A3 --> =SI(A3=A2;FaireCalcul_1;FaireCalcul_2) B3 --> =A3+C3
    A4 --> =SI(A4=A2;FaireCalcul_1;FaireCalcul_2) B4 --> =A4+C4 <-- Ligne insérée
    A5 --> =SI(A5=A3;FaireCalcul_1;FaireCalcul_2) B5 --> =A5+C5 <-- ligne A4 avant insertion et qui a été décalée d'un rang vers le bas
    A6 --> =SI(A6=A5;FaireCalcul_1;FaireCalcul_2) B6 --> =A6+C6

    Au final dans la formule des cellules A4 et A5 la référence à la ligne précédente n'est pas correctement mise à jour que ce soit pour la ligne insérée comme pour la ligne décalée.
    Alors que pour les cellules B4 et B5 tout est OK.

    Y-a-t-il un truc pour palier à ce phénomène ?

    J'espère avoir été suffisamment clair dans les explications du Pb rencontré.

    D'avance MERCI pour m'aider à corriger ce qui ne va pas.
    Cordialement
    oracle7556

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    A2 --> =SI(A2=A1;FaireCalcul_1;FaireCalcul_2)
    étrange formule en A2 qui fait référence à A2

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Bonjour mercatog,

    Je conçois aisément que cette notation puisse être étonnante mais j'ai besoin dans mon process d'exploiter la valeur précédente de la cellule pour déterminer le type de calcul à appliquer à la cellule suivante (en fait une incrémentation dont le pas est variable). C'est tout simple sauf que dans le cas présent Excel ne réagit pas comme je l'escomptais lorsque j'insère une nouvelle ligne. A moins que tu ai une autre idée d'algorythme pour gérer cela ?
    A noter que le problème est le même si je place mon test dans une autre cellule comme par exemple :

    A1 --> "X"
    A2 --> "Y" B2 --> =SI(A2=A1;FaireCalcul_1;FaireCalcul_2)
    A3 --> "Y" B3 --> =SI(A3=A2;FaireCalcul_1;FaireCalcul_2)
    etc...

    Cordialement
    oracle7

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si on a une formule en B2=A1+A2.
    et on insère une ligne à la place de la ligne 2
    la formule devient en B3=A1+A3!
    Parce qu'on a pas touché à la ligne 1.

    Tu peux palier à ceci par vba
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("B3").formular1c1="=R[-1]C[-1]+RC[-1]

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Bonsoir mercatog

    Ton idée est bonne, j'avais aussi envisagé ce type de solution mais comment maintenant l'intégrer dans ma procédure d'insertion de ligne (voir le premier post ci-dessus), là je ne sais pas faire.

    Cordialement
    oracle7556

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Sur une ligne combien tu as de formules?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec l'ordre d'insertion des lignes avec BULK INSERT
    Par TomtomGesti dans le forum Développement
    Réponses: 3
    Dernier message: 18/07/2014, 16h50
  2. [XL-2007] Insertion d'une ligne avec copie de certains éléments
    Par Zentin dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/07/2014, 17h48
  3. [XL-2007] Insertion ligne avec copie certaines cellules ligne précédente
    Par John Parker dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 23/08/2013, 16h42
  4. [XL-2003] insertion de ligne en vba avec copie de formules
    Par Adweuz dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/05/2011, 08h40
  5. Insertion de ligne avec VBA
    Par ANTMA dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 24/09/2007, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo