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-E][Débutant] Autofill sans référence fixe


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut [VBA-E][Débutant] Autofill sans référence fixe
    Bonjour, je souhaiterais pouvoir tirer une formule dans un tableau sans que la référence ne soit fixe. Mon problème vient du fait que le programme va chercher des informations dans un autre fichier...

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Range("E11").Select
    ActiveCell.FormulaR1C1 = _
            "=RC[-1]*'[toto.xls]tata'!R12C10/'[toto.xls]tata'!R12C9"
    Range("E11").Select
    Selection.AutoFill Destination:=Range("E11:E20"), Type:=xlFillDefault
    Range("E11:E20").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.FillRight
    En fait la référence R12C10 fixe la formule comme si on mettait des dollars. Du coup le AutoFill ne permet pas de passer aux colonnes et lignes suivantes.

    Je ne sais pas si j'ai été clair, et surtout ce programme doit être très loin d'être optimisé... mais j'espère que quelqu'un pourra m'aiguiller :-)

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Bon je n'ai pas vérifié mais je crois me souvenir que Autofill n'accepte pas
    Range(Cells(NoLigne1,NoCol1),Cells(NoLigne2,NoCol2))
    Ce que tu peux faire, c'est trouver l'adresse de ta plage
    Où NoLigne2 et NoCol2 sont les dernières ligne et colonne de ta plage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Plage = Range(Cells(NoLigne1,NoCol1),Cells(NoLigne2,NoCol2)).address
    Selection.AutoFill Destination:=Range(Plage), Type:=xlFillDefault
    Mais fais aussi l'essai avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AutoFill Destination:=Range(Cells(NoLigne1,NoCol1),Cells(NoLigne2,NoCol2)), Type:=xlFillDefault
    Si c'est accepté, ça t'évite une variable.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Ouh la la soit je n'ai vraiment pas compris comment ça fonctionne, soit ma question était mal posée car il ne me semble pas que ce soit ça que je cherche à faire...

    Je vais essayer d'être plus précis.

    En fait j'ai un tableau compris dans la plage D11:R20. La colonne D contient une partie des informations initiales à partir desquelles on va pouvoir effectuer le calcul. Les autres informations se trouvent dans un fichier nommé Toto.xls, dans une plage de données située de I8 à W21.

    Je voudrais remplir la première case, E11, à partir des informations contenue dans D11 et celles contenues dans Toto.xls, dans la feuille Tata, aux endroits J12 et I12.

    Mon code donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("E11").Select
        ActiveCell.FormulaR1C1 = _
            "=RC[-1]*'[Toto.xls]Tata'!R12C10/'[Toto.xls]Tata'!R12C9"
    Ce qui produit cette formule-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=D11* '[Toto.xls]Tata'!$J$12/'[Toto.xls]Tata'!$I$12"
    Après, je voudrais tirer cette formule en bas, jusqu'à la ligne 20 et à droite jusqu'au bout, cad la colonne R (ou 18 en nombre), mais sans qu'il y ait les dollars qui empêchent la prise en compte des bonnes colonnes et lignes dans le fichier Toto.

    Du coup, lors de mon premier "étirement" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AutoFill Destination:=Range("E11:E20"), Type:=xlFillDefault
    comme il y a les dollars je n'arrive pas çà la formule voulue qui serait, pour la ligne suivante par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=D12*'[Toto.xls]Tata'!J13/'[Toto.xls]Tata'!I13"

    En fait je pense que mon problème vient de mon référencement initial des cellules du fichier Toto.xls. La dénomination R12C10 semble statique. N'y-a-t-il pas moyen de faire quelque chose là-dessus ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [e11] = Application.ConvertFormula( _
         Formula:="=RC[-1]*[Toto.xls]Tata!R12C10/[Toto.xls]Tata!R12C9", _
         fromReferenceStyle:=xlR1C1, toReferenceStyle:=xlA1, _
         toabsolute:=xlRelative, relativeto:=[e11])
    [e11].AutoFill Destination:=[e11:e20], Type:=xlFillDefault
    Range([e11], [e20].End(xlToRight)).FillRight

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Après quelques atermoiments et des erreurs d'inattention... ça marche !!! Merci beaucoup

    En fait il manquait juste les ' pour identifier les cellules du fichier Toto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [e11] = Application.ConvertFormula( _
         Formula:="=RC[-1]*'[Toto.xls]Tata'!R12C10/'[Toto.xls]Tata'!R12C9", _
         fromReferenceStyle:=xlR1C1, toReferenceStyle:=xlA1, _
         toabsolute:=xlRelative, relativeto:=[e11])
    [e11].AutoFill Destination:=[e11:e20], Type:=xlFillDefault
    Range([e11], [e20].End(xlToRight)).FillRight

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

Discussions similaires

  1. [VBA][Word] débutant suppression d'une page
    Par cyrcroix dans le forum VBA Word
    Réponses: 3
    Dernier message: 30/12/2005, 19h22
  2. VBA Excel Débutant : Graphique et objet Range
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/11/2005, 18h34
  3. Configuration de BIND sans IP fixe
    Par NeoMan dans le forum Réseau
    Réponses: 18
    Dernier message: 25/07/2005, 21h07
  4. href sans référence
    Par Daeron dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 10/11/2004, 11h02
  5. [débutant]fenetre sans bordure
    Par crazypiou dans le forum DirectX
    Réponses: 2
    Dernier message: 01/05/2004, 18h43

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