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 :

Besoin d'aide pour parfaire mon code enregistrement [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut Besoin d'aide pour parfaire mon code enregistrement
    Salut le forum

    Je viens vers vous pour obtenir de l'aide.
    dans mon fichier joint, j'ai un code qui doit me permettre d'enregistrer une feuille de mon classeur sur un nouveau classeur dans un dossier déjà défini. Le nom du nouveau classeur est égale à la valeur de la cellule DEVIS!R1.
    Lorsque j’exécute le code, il y'a debogage ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs Filename:=Proforma & Feuil1.Range("R1")
    Aussi, comment faire pour que le nom de la feuille à copier soit la valeur de la cellule PARAMETRE!G2 (en effet dans mon classeur final, j'ai au moins 20 feuilles et dans parametre!G2 j'ai mis une formule qui correspond au nom de la feuille à copier.
    Merci de m'aider à intégrer cette condition dans mon code en plus du problème de débogage déjà décelé.
    Ci-dessous le 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
    15
    16
    17
    18
    Sub Enreg_Proforma()
    Dim Dossier As String, Exercice As String, Proforma As String
     
    Dossier = "C:\"
     
    Exercice = Dossier & "\EXERCICES " & Format(Date, "yyyy")
    If Dir(Exercice, vbDirectory) = "" Then MkDir Exercice
     
    Proforma = Exercice & "\PROFORMA " & Format(Date, "yyyy")
    If Dir(Proforma, vbDirectory) = "" Then MkDir Proforma
     'copie de la feuille dans un nouveau classeur
     Sheets("Devis").Copy
     Application.DisplayAlerts = False
     ActiveWorkbook.SaveAs Filename:=Proforma & Feuil1.Range("R1")
     Application.DisplayAlerts = True
     ActiveWorkbook.Close
    'ThisWorkbook.SaveAs Filename:=Proforma & "\" & Feuil1.Range("R1") ', FileFormat:=xlOpenXMLWorkbookMacroEnabled
    End Sub

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Bonjour,

    commencer donc par enfin contrôler les valeurs des variables et des cellules des lignes en erreur, cela aiderait bien aussi …

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Dès les premières lignes
    Dossier = "C:\"

    Exercice = Dossier & "\EXERCICES "
    ce qui donne "C:\\EXERCICES "
    MPi²

  4. #4
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut
    Salut Marc-L et le forum

    Merci pour votre contribution.
    J'ai pas bien compris votre remarque mais j'ai "tout" vérifié mais je sais pas pourquoi il y'a toujours le débogage.
    Si vous voyez ou j'ai "péché" (depuis matin que je cherche mais en vain), merci de me corriger.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Qu'est-ce qu'il y a d'inscrit ici: Feuil1.Range("R1")
    MPi²

  6. #6
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut
    Salut Parmi et le forum

    Qu'est-ce qu'il y a d'inscrit ici: Feuil1.Range("R1")
    C'est le nom que doit porter le nouveau fichier.
    Il s'agit d'une formule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C17&"_"&GAUCHE(H17;5)&"_"&TEXTE(H18;"jj mm aaaa")&"_"&C27
    Le problème concernant l'enregistrement a été résolu.
    Effectivement il y'avait une erreur ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dossier = "C:\"
     
    Exercice = Dossier & "\EXERCICES "
    Que j'ai rectifié par ceci: Dossier = "C:"

    Exercice = Dossier & "\EXERCICES " et ca fonctionne bien.
    Il reste maintenant le problème concernant la feuille à copier.
    J'ai souhaité que le nom de la feuille à copier soit celle de la cellule G2 de la feuille PARAMETRE.
    Comment intégrer cette condition dans mon code?

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Tu ne m'as pas dit ce que contenait la cellule, mais bon... peut-être comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs Filename:=Proforma & "\" & Sheets("PARAMETRE").Range("R1") & ".xlsx"
    MPi²

  8. #8
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut
    Salut Parmi

    Merci pour votre solution qui fonctionne bien.
    Et pourtant j'ai donné le contenu de la cellule dans le post#6.
    Je ne sais pas si vous avez vu mon dernier besoin:
    Il reste maintenant le problème concernant la feuille à copier.
    J'ai souhaité que le nom de la feuille à copier soit celle de la cellule G2 (valeur de la cellule) de la feuille PARAMETRE.
    Comment intégrer cette condition dans mon code ?

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    C17&"_"&GAUCHE(H17;5)&"_"&TEXTE(H18;"jj mm aaaa")&"_"&C27
    Ceci me donne la formule inscrite, mais pas le résultat.
    Ce n'est pas grave si ça fonctionne...

    Pour ta question, c'est ce que je t'ai mis dans le message précédent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Sheets("Devis").Copy
     Application.DisplayAlerts = False
     ActiveWorkbook.SaveAs Filename:=Proforma & "\" & Sheets("PARAMETRE").Range("R1") & ".xlsx"
    MPi²

  10. #10
    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
    Attention au classeur actif

    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
    Sub Enreg_Proforma()
    Dim Dossier As String, Exercice As String, Proforma As String
     
    Dossier = "C:\"
     
    Exercice = Dossier & "EXERCICES " & Format(Date, "yyyy")
    If Dir(Exercice, vbDirectory) = "" Then MkDir Exercice
     
    Proforma = Exercice & "\PROFORMA " & Format(Date, "yyyy")
    If Dir(Proforma, vbDirectory) = "" Then MkDir Proforma
     
    ThisWorkbook.Worksheets("Devis").Copy
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=Proforma & "\" & ThisWorkbook.Worksheets("PARAMETRE").Range("G2")
    Application.DisplayAlerts = True
    ActiveWorkbook.Close
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  11. #11
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bien vu !
    MPi²

  12. #12
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut
    Salut Mercatog et Parmi

    merci pour vos riches contributions.
    Suis satisfait.

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

Discussions similaires

  1. [XL-2007] Besoin d'aide pour améliorer mon code copier-coller
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/07/2014, 16h14
  2. [Débutant] Besoin d'aide pour restructurer mon code autour de l'objet Process
    Par BasicZX81 dans le forum VB.NET
    Réponses: 10
    Dernier message: 01/02/2014, 16h01
  3. [VB.NET] besoin d'aide pour déchiffrer un code
    Par pcdj dans le forum Windows Forms
    Réponses: 10
    Dernier message: 27/06/2006, 11h32
  4. [VBA-E] Aide pour éxécuter mon code en cliquant sur un bouton dans excel.
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 53
    Dernier message: 29/05/2006, 13h47
  5. Je besoin d'aide pour terminer mon code
    Par Paulinho dans le forum C++
    Réponses: 7
    Dernier message: 06/11/2005, 23h30

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