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 :

Attribuer une formule stockée dans une variable string


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Par défaut Attribuer une formule stockée dans une variable string
    Bonjour,
    J'ai un formulaire ACCESS sur lequel j'ai inséré une feuille Excel(Microsoft Office Spreadsheet 11.0). A priori, le VBA EXCEL est bien pris en compte car j'ai récupéré pas mal de bouts de code ici et là qui fonctionnent très bien...

    Mon problème est le suivant :
    Lors d'une boucle, je créée une formule du type
    "=Feuille1!B2+Feuille2!B2+Feuille3!B2...." qui est stockée dans une variable String .
    Lorsque je veux affecter cette formule à des cellules (wks.Range("C" & i).Formula = MaVariable), j'ai une erreur...La méthode Formula de l'objet _Range a échoué...Alors que si je mets wks.Range("C" & i).Formula = "=Feuille1!B2+Feuille2!B2+Feuille3!B2" ça fonctionne

    Quelqu'un aurait une idée ?

  2. #2
    Membre chevronné Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Par défaut
    J'ai essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim toti As String
    i = 1
    toti = "=Feuil1!B2+Feuil2!B2+Feuil3!B2"
    Worksheets(1).Range("C" & i).Formula = toti
    et ca fonctionne très bien !! (Tu peux mettre ton code ?)


    Pourquoi tu ne fait pas la somme directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    i = 1
    Total = 0
     
    For J = 1 To Sheets.Count
        Total = Total + Sheets(J).Range("C" & i)
    Next J
    Sheets(1).Range("C" & i) = Total

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Par défaut
    Citation Envoyé par delphine35
    Pourquoi tu ne fait pas la somme directement :
    Car je voudrais que ces valeurs soient dynamiques lorsqu'on modifie la valeur d'une des cellules sources.
    Voici un résumé de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    strSql1 = "SELECT T_services.* FROM T_services WHERE (((T_services.nomService)<>'N/A'));"
    Set wks = Me.SpreadMFC.Object
    Set service = CurrentDb.OpenRecordset(strSql1)
    wks.ActiveSheet.Name = service("nomService")
    sommeHeures = "=" & service("nomService") & "!B2"
    While Not service.EOF
        wks.Worksheets.Add
        wks.ActiveSheet.Name = service("nomService")
        sommeHeures = sommeHeures & "+" & service("nomService") & "!B2"
        service.MoveNext
    Wend
    For i = 2 To wks.Range("A2").End(xlDown).Row
        wks.Range("C" & i).Formula = sommeHeures
    Next i
    EDIT : Je crois deviner d'où vient l'erreur....A priori ça vient du fait que certains noms de feuilles ont un espace (ex : QC production)...Donc je cherche la syntaxe pour palier à ce problème (les crochets [QC production] ne fonctionnent pas déjà :p)

  4. #4
    Membre chevronné Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Par défaut
    Tu aurait pas oublier de changer de service ?
    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
    strSql1 = "SELECT T_services.* FROM T_services WHERE (((T_services.nomService)<>'N/A'));"
    Set wks = Me.SpreadMFC.Object
    Set service = CurrentDb.OpenRecordset(strSql1)
    wks.ActiveSheet.Name = service("nomService")
    sommeHeures = "=" & service("nomService") & "!B2"
    service.MoveNext
    While Not service.EOF
        wks.Worksheets.Add
        wks.ActiveSheet.Name = service("nomService")
        sommeHeures = sommeHeures & "+" & service("nomService") & "!B2"
        service.MoveNext
    Wend
    For i = 2 To wks.Range("A2").End(xlDown).Row
        wks.Range("C" & i).Formula = sommeHeures
    Next i

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Par défaut
    Merci beaucoup à toi Delphine mais j'ai trouvé !
    C'était des apostrophes à mettre autour de chaque service....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sommeHeures = "='" & service("nomService") & "'!B2"
    ...
    ...
    sommeHeures = sommeHeures & "+'" & service("nomService") & "'!B2"

    NB : ta remarque est justifiée mais ça faisait partie des lignes que j'ai retirées pour alléger le texte ^^

  6. #6
    Membre chevronné Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Par défaut
    Il doit tout de meme te manquer un service.MoveNext avant le While ...

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  2. Requête utilisant une formule stockée dans une table
    Par alexiisme dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 23/01/2008, 07h01
  3. Réponses: 3
    Dernier message: 28/08/2007, 15h21
  4. Appel d'une procédure stockée dans une procédure stockée
    Par MrEddy dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/09/2006, 16h17
  5. Réponses: 3
    Dernier message: 17/01/2006, 17h12

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