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 :

Macro VBA Automatisation


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Actuaire
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Actuaire

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Macro VBA Automatisation
    Bonjour Mme,Mr,

    Je vous écris aujourd'hui car je suis confronté à un problème, dans excel nous avons la formule Somme.si mais celle ci ne fonctionne pas si on fais appel à des données dans un autre fichier excel,
    il faut l'ouvrir pour que excel ne nous affiche pas #Valeur.

    Pour éviter ce problème je voudrais faire une macro qui fais la somme de ce code excel :

    =+SOMME.SI('C:\Users\Chari\Desktop\Données Booklet 2\2019\1A100G GROUPE XXX\[450527916_122018_CrcKO_20190614_arg_ErreurDonneesInstance.xlsx]s.35.01.04'!$C$13:$C$37;"1 - Method 1";'C:\Users\Chari\Desktop\Données Booklet 2\2019\1A100G GROUPE XXX\[450527916_122018_CrcKO_20190614_arg_ErreurDonneesInstance.xlsx]s.35.01.04'!$F$13:$F$37)

    Et que une fois le calcul fais il me mette le résultat dans ma cellule précise dans la feuille précise...

    En effet si on fais une macro, excel garde les données en brutes donc si je fais mettre a jour les liens ça me les réinitialise pas en #valeur...
    Mais je galère à mort !
    Depuis hier je suis bloqué sur cette broutille .

    Je vous remercie.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Points : 518
    Points
    518
    Par défaut
    Bonjour,

    Tu peux utiliser la méthode .FormulaR1C1 à appliquer après l'objet Range - Il faudra écrire la formule en anglais.
    Pour l'écrire dans la langue de ton Excel, il faudra utiliser la méthode .FormulaLocal - peut présenter un problème si ce classeur est utilisé par des personnes ayant une version Excel dans une autre langue.

    Bien évidemment, à utiliser après l'ouverture du classeur dont tu prends les données

  3. #3
    Candidat au Club
    Femme Profil pro
    Actuaire
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Actuaire

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour Rever,

    Merci pour ta réponse mais je suis débutant complet en VBA....
    Je dois faire ce truc pour rendre mon travail ce soir mais je me rend compte que je sais pas faire du tout :/

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Points : 518
    Points
    518
    Par défaut
    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
    Private Sub Test()
    Dim Pathname as String
    Dim Name as String
     
    Pathname = "Chemin1...\"
    Name = Nom_Classeur
     
    Workbooks.Open(Pathname & Name & ".xlsx")
     
    Set WbT = Workbooks(Name)
    Set Wb = ThisWorkbook
    'ThisWorkbook définit le classeur où le code est écrit
     
    Wb.Sheets(1).Range("A1").FormulaLocal = "=SOMME.SI(WbT.Range("$C$13:$C$37");"1 - Method1";WbT.Range("$F$13:$F$37"))"
    End Sub
    Je ne garantis pas la réussite du code, je n'ai pas testé. Je ne sais surtout pas non plus à quoi correspond ce "1 - Method1". N'hésite pas à utiliser le mode pas à pas pour vérifier, si Débogage, les valeurs prises par chacune des variables.

  5. #5
    Candidat au Club
    Femme Profil pro
    Actuaire
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Actuaire

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup je teste tout de suite, le "1 - Formula 1" c'est le critère qu'il y a dans la case... un truc de calcul d'actuaires... mais que je prend comme condition ici faut que dans la case C.. il y ait ca pour que il fasse l'addition

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Points : 518
    Points
    518
    Par défaut
    Je pense que tu as tous les outils en main pour le coup.

    Tu as juste à faire attention que tes fichiers s'ouvrent bien. Commence déjà juste avec l'ouverture du classeur sans écrire le .FormulaLocal. Mieux vaut limiter la portée des erreurs tant qu'on peut. Il est plus facile de corriger quelque chose sur 2 lignes que si on écrit 60 lignes en brut ... Bon y'en a pas 60 mais tu as compris l'idée ^^

  7. #7
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Pour ma part, la formulation doit d'abord se porter sur tableur (Comme qui dirait, "Penser d'abord Excel") afin d'être validée
    Ce n'est qu'ensuite que le code doit être rédigé en conséquence.

    Pour ce faire:
    1 -EXCEL tableur: Ecrire la formulation sur la feuille (exemple en A1)
    2 -Editeur VBE:
    2-a Afficher la fenêtre Exécution (CTRL + G)
    2-b Ecrire sans oublier le point d'interrogation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?Worksheets("nomdelafeuille").Range("A1").Formula
    2-c Activer la touche Entrée: la fenêtre affichera cette formule
    2-d Par un simple copier coller, reporter cette formule en l'encadrant de double quottes pour paramétrer une propriété Formula (non Formulalocal)
    (Remarque, si une paire double quottes se trouve à l'intérieur de la formule, alors elles devront être dédoublées)
    2-e Pour une formulation utilisant un classeur externe, mieux vaut coller cette valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Worksheets("nomdelafeuille").Range("A1")
      .Formula = "laformule"
      .Value = .Value
    End With
    Remarque:
    L'objet de la discussion est la formulation.

    Pour autant, aurait pu être utilisée la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("nomdelafeuille").Range("A1").Value = Evaluate("laformule")
    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("nomdelafeuille").Range("A1").Value = Evaluate("=2+2")

  8. #8
    Candidat au Club
    Femme Profil pro
    Actuaire
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Actuaire

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'essaye, mais indice n'appartient pas la selection... set wbt
    Je suis éclaté en vba sorry

  9. #9
    Candidat au Club
    Femme Profil pro
    Actuaire
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Actuaire

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    En fait il ne faut pas qu'il y ai de formule dans le tableau excel :
    -en fait la macro fais le calcul, les données se trouvent dans un fichier excel différent, ce résultat il le colle dans un autre fichier excel.... Le résultat en brut, non pas une formule qui est inscrite dans mon fichier ecxel de travail.

    Genre on a fichier A et B, B est mon fichier de travail et A fichier de données.

    Maco VBA a executer dans Dans B : La macro va chercher les données dans fichiers A feuille S, fais le somme Si (condition = "1 - Method 1") et le résultat obtenu de la somme la colle dans la cellu "C77" de la feuille Z du fichier excel B.

  10. #10
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    indice n'appartient pas la selection... set wbt
    Pour affecter une variable à un objet, mieux vaut désigner nommément (ou presque) celui-ci.

    Si le classeur est celui venant d'être ouvert

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wbt = ActibeWorkbook
    Sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wbt = Workbooks("nom du classeur")

  11. #11
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Maintenant, je reviens sur la formulation par une remarque.

    Pour plus de clarté, et donc de souplesse, il peut être opportun d'affecter la formule à une variable de type String.
    Celle-ci sera ensuite le paramètre de la propriété Formula.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim maformule As String
    maformule = "=2+2"
     
    Range("A1").Formula = maformule
    Idem pour Bon week-end à vous, Bon week-end au Forum.

  12. #12
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    (Je préfère exposer un post par question)

    En fait il ne faut pas qu'il y ai de formule dans le tableau excel :
    -en fait la macro fais le calcul, les données se trouvent dans un fichier excel différent, ce résultat il le colle dans un autre fichier excel.... Le résultat en brut, non pas une formule qui est inscrite dans mon fichier ecxel de travail.
    En effet, c'est plus prudent.

    Voir ma remarque

    Ou
    Ou directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Value = Evaluate("laformule")

  13. #13
    Candidat au Club
    Femme Profil pro
    Actuaire
    Inscrit en
    Janvier 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Actuaire

    Informations forums :
    Inscription : Janvier 2020
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci a tout pour vos conseils et vos reponses, je vous en suit reconaissant...
    Mais je suis tellement fort que j'y arrive pas

  14. #14
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour Tzarist, Bonjour le Forum,

    Mais je suis tellement fort que j'y arrive pas
    Dans ce cas, il te faudrait être plus précise.

    Dans mon premier post, je t'ai exposé un processus.

    Quelle étape pose problème,
    Eventuellement, quelle ligne de code (surlignée généralement en jaune), s'arrête le débugger?
    Quel message d'erreur?

    Reporte donc ton code dans son intégralité en précisant le(s) points d'achoppement.

    On va y arriver.

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

Discussions similaires

  1. Macro VBA word pour automatiser un rapport
    Par zouizoui dans le forum VBA Word
    Réponses: 7
    Dernier message: 30/10/2014, 22h07
  2. [WD-2007] Automatiser le remplissage de signets WORD par Macro VBA
    Par benkornskater dans le forum VBA Word
    Réponses: 2
    Dernier message: 13/05/2013, 12h03
  3. Automatisation d'un fichier macros VBA
    Par Baptiste67 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/11/2012, 18h39
  4. Automatisation d'une macro VBA Access
    Par fbourdon dans le forum IHM
    Réponses: 1
    Dernier message: 26/11/2009, 17h40
  5. Macro VBA : automatiser la réponse à une question.
    Par monf29 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/06/2007, 11h18

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