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 :

modifier une formule vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut modifier une formule vba
    Bonjour a tous et toutes

    Avant tout, je vous souhaite une tres belle annee 2010 et merci de vos soutiens en matiere d'excel..

    Pour ce qui est de mon probleme :

    J'ai fait un tableau ou j'ai insere des formules .
    Pour 2010, je dois y inserer une colonne supplementaire.
    Si en inserant une colonne, la formule excel change..celle qui se trouve dans la macro ne bouge pas et lorsque j'execute la macro..j'ai un resultat faux.
    Voici un exemple pour mieux me faire comprendre:

    Tableau avant 2010 :
    En A6 j'ai une formule du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI(ET(G6>=$E$3,G6<=$D$4),$D$2+1,$D$2)
    En vba, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(AND(RC[6]>=R3C5,RC[6]<=R4C4),R2C4+1,R2C4)
    Tableau au 1er janvier 2010 avec insertion d'une colonne supplementaire(entre colonne B et C):
    En A6 le formule deviendrait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI(ET(H6>=$F$3,H6<=$E$4),$E$2+1,$E$2)
    jusque la pas de soucis, la formule excel a bien pris en compte l'insertion de cette nouvelle colonne .Mais pour ce qui est de la formule vba, elle reste toujours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(AND(RC[6]>=R3C5,RC[6]<=R4C4),R2C4+1,R2C4)
    Et j'ai plusieurs formules, inserees dans ce tableau, qui vont etre touchees par l'insertion de cette nouvelle colonne.

    Ma question est : Y a t il un moyen rapide et automatique pour que la fomule vba change lorsque j'insere une nouvelle colonne ou suis je contraint de la modifier moi meme ce qui risque d'etre tres long

  2. #2
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonsoir le forum,

    Juste une idée comme çà.

    Pourquoi ne pas poser ta formule avec ton code et inserer ta colonne ensuite par une ligne supplémentaire de VBA avec la commande "INSERT".

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut facteur et le forum
    Bonne et heureuse année 2010
    PS : je vous joins le tableau et je ne suis pas un pro de vba ...
    L'arche de Noé a été faite par des amateurs, alors que le Titanic l'a été par des Pros...
    Juste une remarque : tu penses que tu n'inséreras qu'une colonne. Mais je pense (éh oui, ça m'arrive) que c'est problème qui reviendra chaque année. Donc, au lieu de penser à l'adjonction d'une seule colonne, il vaudrait mieux réfléchir à comment détecter automatiquement par la macro les lignes, colonnes ou cellules qui sont contenues dans la/les formule/s. Mais avec seulement les infos de ton sujet, difficile de faire des propositions.

    Juste une remarque : Il existe d'autres propriétés que .FormulaR1C1 : .FormulaLocal (avec, tu peux copier/coller directement une formule de la feuille dans ta macro) ou .FormulaR1C1Local (permet de travailler en R1C1 et de faire du copier/coller). Mais faut pas se leurrer : ça ne fait qu'aider.
    A+

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour et heureuse année à tou(te)s,
    Sans ton classeur comme exemple ce n'est pas possible de bien comprendre, j'ai vu qu'un modo l'à enlevé, veux-tu le remettre.
    A+

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Merci pour ces reponses.
    Mais je reste toujours dans le flou


    LeForestier, je te joins le fichier qui a disparu.

    Gorfael :lorsque tu parles de formule de type FormulaLocal ou je pourrais copier/coller directement une formule de la feuille dans ta macro ou de type FormulaR1C1Local qui permet de travailler en R1C1 et de faire du copier/coller ; Si je remplace ma formule de type FormulaR1C1 par une des deux formules ci dessous, mon probleme sera resolu...:roll ?:

    marc58 :comment ecrirais tu la formule avec la commande 'INSERT"
    Fichiers attachés Fichiers attachés

  6. #6
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonsoir le forum,

    Le plus simple, c'est que tu utilises l'enregistreur de macro.

    Tu auras le code correspondant que tu pourras adapter.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Re,
    Remplace ta macro Test par..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub InsertColonne()
    Dim Decal As Integer
        Sheets("DEPART-mardi-10-11-2009").Activate
        Columns("C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Cells(1, 1) = Cells(1, 1) + 1
        Decal = Cells(1, 1)
        Range("A5").Value = " date"
        Range("A6").FormulaR1C1 = "=IF(AND(RC[" & Decal & "]>=R3C5,RC[" & Decal & "]<=R4C4),R2C4+1,R2C4)" ' formule pour modifier la date
    End Sub
    Bien sûr, tu ne doit pas insérer la colonne manuellement.
    Mais tu a une erreur dans la formule, mais ça je crois que tu sauras faire.
    Et oublie pas, que tes colonne de test se déplace aussi, faudrait peut-être employer le même principe (Decal) pour les tests.
    Ne pas changer FormulaR1C1 vu que tu emploi un adressage relatif.
    En A1 Mettre 6 (le chiffre 6) et mettre le format cellule en standard.
    Et enfin, pour info, il existe aussi une fonction DECAL par formule Excel.
    A+

  8. #8
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Merci pour ces reponses.
    LeForestier, je test ta response et te tiens au courant..
    ET bon dimance a tous et bon debut de semaine...

  9. #9
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bonjour à tous,
    Je me permets d'intervenir car il me semble que tout a été dit mais sans la solution la plus simple.
    Je reprend donc suivant ce que j'ai compris, la formule est en 'FormulaR1C1' on est donc sur le principe de référence.
    Dans ce cas pour avoir une formule Excel relative il faut mettre des [], l'absence des ces [] correspond donc au $ dans Excel.

    Il me semble donc (j'ai pas testé) qu'il suffit de rajouter des [] dans la formule VBA afin de ne plus avoir les colonne en référence absolue (excel)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(AND(RC[6]>=R3C[5],RC[6]<=R4C[4]),R2C[4]+1,R2C[4])
    A+

    P.S. J'ai supposé que les lignes devaient bien resté en référence absolue

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour Fvandermeulen,

    Ma question est : Y a t il un moyen rapide et automatique pour que la fomule vba change lorsque j'insere une nouvelle colonne ou suis je contraint de la modifier moi meme ce qui risque d'etre tres long
    A+

  11. #11
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    En effet , j'vais me recoucher...

Discussions similaires

  1. [Toutes versions] Insérer une formule VBA
    Par F.Salenko dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2011, 15h07
  2. [XL-2007] Modifier une formule excel
    Par stechajo dans le forum Excel
    Réponses: 1
    Dernier message: 01/03/2011, 11h23
  3. Modifier une Formule
    Par Ropie94 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/07/2009, 11h13
  4. [VBA] [XiR2] Modifier une formule de variable dans un rapport ?
    Par ctobini dans le forum SDK
    Réponses: 2
    Dernier message: 22/03/2009, 17h41
  5. modifier une formule
    Par kirua2150 dans le forum Excel
    Réponses: 2
    Dernier message: 18/04/2007, 16h37

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