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 :

Problème avec Adresse d'une FormulaLoca [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Points : 106
    Points
    106
    Par défaut Problème avec Adresse d'une FormulaLoca
    Bonjour à tous,
    J’ai un problème avec l’adresse de ma formule. En effet,
    Quand je vais les cellules où se trouve le résultat je découvre que mon code n’a pas pris en compte le Sh38 mais calcul avec les cellules de la feuille active.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub valeur_ligne ()
     
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
     
        Dim Sh As Worksheet
        Dim Sh38 As Worksheet
        Dim Col As Integer
        Dim Lig As Integer
     
        Set Sh = ActiveSheet
        Set Sh38 = Feuil38
     
        For Lig = 57 To 70
            For Col = 66 To 118
                Sh.Cells(Lig, Col).Formula = "=" & Sh38.Cells(Lig - 46, 4).Address & "*" & Sh38.Cells(Lig - 46, Col - 60).Address & ""
            Next Col
        Next Lig
     
        Set Sh = Nothing
        Set Sh38 = Nothing
     
    End Sub
    Vous remerciant pour votre aide.

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 070
    Points : 9 849
    Points
    9 849
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il faut également spécifier la feuille à laquelle tu te réfères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Cells(Lig, Col).Formula = "=" & Sh38.Name & "!" & Sh38.Cells(Lig - 46, 4).Address & "*" & Sh38.Name & "!" & Sh38.Cells(Lig - 46, Col - 60).Address & ""

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Points : 106
    Points
    106
    Par défaut
    J'ai l'erreur 1004 : erreur définie par l'application ou par l'objet.
    Dois je garder le second Sh38
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     & Sh38.Name & "!" & Sh38.Cells(Lig - 46, 4).Address &

  4. #4
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Ou bien directement (sans boucle)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Range("BN57:DN70").Formula = "='" & Sh38.Name & "'!$D11*F11"
    PS, j'ai ajouté des ' avant et après le nom de la feuille dans le cas où le nom de Feuil38 contient des espaces
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Points : 106
    Points
    106
    Par défaut
    J'ai besoin de ma boucle car c'est un tableau alimenté par un autre tableau d'ou le besoin que toutes mes lignes soient prises en compte sinon le code risque d'être à rallonge.

  6. #6
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Citation Envoyé par Ardiden31 Voir le message
    J'ai besoin de ma boucle car c'est un tableau alimenté par un autre tableau d'ou le besoin que toutes mes lignes soient prises en compte sinon le code risque d'être à rallonge.
    C'est à dire?

    Si on sait remplacer 2 boucles par une seule ligne et qui fait la même chose, je ne vois pas pourquoi on ne va pas opter pour ça
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Points : 106
    Points
    106
    Par défaut
    Pardon j'avais mal compris.

    J'ai donc repris ton idée en mettant les variables mais une erreur d'excution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Range("BN" & Lig, "DN" & Lig).Formula = "='" & Sh38.Name & "'!$D" & Lig - 46 & "*" & Lig - 46 & "," & Col - 60 & "
    Je crois que l'erreur est dans cette partie là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "*" & Lig - 46 & "," & Col - 60 & "
    Merci

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonjour,

    déjà lorsqu'il il y as une erreur la première chose est de lire le message d'erreur ... l'as tu lu ? dans tous les cas tu ne l'as pas reporté ici !!


    une erreur de syntaxe, tu as compté tes guillemets ?

  9. #9
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Points : 106
    Points
    106
    Par défaut
    Désolé l'erreur est la suivante "1004 : erreur définie par l'application où pas l'objet". Voici le code avec les modifications :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Range("BN" & Lig, "DN" & Lig).Formula = "='" & Sh38.Name & "'!$D" & Lig - 46 & "*" & Sh38.Name & "'!F" & Lig - 46
    J'ai bien recompter les "" et les &, je sais que l'erreur doit se trouver par là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "*" & Sh38.Name & "'!F" & Lig - 46

  10. #10
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Points : 106
    Points
    106
    Par défaut
    Erreur trouvé il s'agissait d'un apostrophe après le *

    Merci à vous

  11. #11
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Si tu avais évoqué la proposition #4, qui fait la même chose et sans utiliser de boucles (consommatrice de ressources et de temps), tu aurais au moins saisi l'approche et la correction qui en découle. Car plus tard, tu auras besoin de ce type de réflexe dans le but d'optimisation de tes codes.

    Sans boucle et je me répète, il suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Range("BN57:DN70").Formula = "='" & Sh38.Name & "'!$D11*'" & Sh38.Name & "'!F11"
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  12. #12
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Points : 106
    Points
    106
    Par défaut
    Holala excuse moi vraiment je me sens bête là j'étais fixée sur la boucle que je n'ai pas poussé le raisonnement plus loin sur ton bout de code ... Je te remercie vraiment

    En tout cas c'est une véritable révélation j'ai du boulot mais je vais modifier tous mes codes avec des boucles comme celle là. Encore merci

  13. #13
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Points : 106
    Points
    106
    Par défaut
    Je me permets de venir sur une autre formule j'ai utilisé le même principe que votre code sauf que dans les cellules cible j'ai des #Nom?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Range("DN57:DN70") = "=somme(BN57:DM57)"

  14. #14
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Points : 106
    Points
    106
    Par défaut
    Réponse à ma question SUM au lieu de SOMME encore merci Mercatog.

    A+

  15. #15
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 070
    Points : 9 849
    Points
    9 849
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il est conseillé de bien faire référence à .Formula

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Range("DN57:DN70").Formula = "=sum(BN57:DM57)"
    .Formula : faut mettre les noms de formules en anglais

    Sinon tu utilises .FormulaLocal pour mettre les noms français

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Range("DN57:DN70").FormulaLocal = "=somme(BN57:DM57)"

  16. #16
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Déjà il faudra écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Range(X).Formula="=SUM(Y)"
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Range(X).FormulaLocal="=somme(Y)"
    Adaptes X et Y

    Je préfère la 1.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

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

Discussions similaires

  1. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 16h50
  2. FAQ : problème avec création d'une requete en VBA
    Par Oluha dans le forum VBA Access
    Réponses: 14
    Dernier message: 14/02/2006, 13h05
  3. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 16h48
  4. Problème avec affichage d'une table modifiée
    Par auriolbeach dans le forum Access
    Réponses: 6
    Dernier message: 31/10/2005, 16h45
  5. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 11h19

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