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]Récupérer valeur cellule


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 143
    Points : 38
    Points
    38
    Par défaut [VBA-E]Récupérer valeur cellule
    J'ai un fichier excel pour des demandes d'absence.
    J'ai fait un code VB qui, quand quelqu'un tape nom/prénom, motif, ... , il tape sur un boutonn "Exécuter" et le document excel s'enregistre sous un autre nom en gardant l'original intact. De plus, le fichier excel créé est vérouillé.

    Je voudrais que le fichier créé prenne le nom de deux cellules concaténées (une cellule avec nom/prénom et une autre avec la date actuelle). Je n'y arrive pas. Je vous mets 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
    15
    16
    17
    18
    19
     
    Private Sub Exécuter_Click()
    Dim Choix As String
     
    Choix = Range("G6")
     
    With ActiveSheet
    .Copy ' crée un classeur avec la feuille active
    End With
    ActiveSheet.Protect Scenarios:=True, UserInterfaceOnly:=True
    With ActiveWorkbook
    .SaveAs "P:\PRIOUL" & "\" & Filename = (Choix)
    .Close ' si nécessaire
    End With
     
    ThisWorkbook.Close False
     
     
    End Sub
    De plus, les cellules dont je prendre le contenu sont des cellules fusionnées (je sais pas si ça interfère).

    Merci d'avance

  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 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With ActiveWorkbook 
    .SaveAs Filename:= "P:\PRIOUL" & "\" & Choix 
    .Close ' si nécessaire 
    End With
    essaie comme ça, ça ira mieux (si choix est un string ou un variant)

    A+

    NB - Je préfère toujours passer par une variable pour indiquer filename :
    NomFich = "P:\PRIOUL" & "\" & Choix
    .SaveAs Filename:= NomFich

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 143
    Points : 38
    Points
    38
    Par défaut
    J'ai déjà essayé ça et à chaque fois il me renvoit erreur 1004.
    Je crois que j'ai compris d'où venait l'erreur.
    La cellule en question contient une formule excel maintenant(). Et la date s'affiche au format jj/mm/aaaa hh:mm.
    Or un fichier excel ne peut comporter la ponctuation ":"

    Comment je peux faire pour contourner ce problème. Même si je dois prendre la date sans l'heure.

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Je serais tenté de dire que AUJOURDHUI convient mieux que MAINTENANT si l'heure n'a pas d'importance

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 143
    Points : 38
    Points
    38
    Par défaut
    Ca ne marche pas.

    Quand il est rendu à la ligne pour enregistrer sous le nom de ce que la cellule contient, il me dit "erreur 1004, Microsoft Excel ne peut pas accéder au dossier P:\PRIOUL\03\02"

  6. #6
    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 546
    Points
    15 546
    Par défaut
    Montre le code de récup du nom de fichier et dis-nous quelles cellules sont fusionnées (pédigré, adresse et tout...)

    A+

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 143
    Points : 38
    Points
    38
    Par défaut
    Voici le code entier que j'ai :
    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
     
    Private Sub Exécuter_Click()
    Dim Choix As String
     
    Choix = Range("G6").Text
    Choix2 = Range("G8")
     
    With ActiveSheet
    .Copy ' crée un classeur avec la feuille active
    End With
    ActiveSheet.Protect Scenarios:=True, UserInterfaceOnly:=True
    With ActiveWorkbook
    .SaveAs Filename:="P:\PRIOUL" & "\" & Choix & Choix2
    .Close ' si nécessaire
    End With
     
    ThisWorkbook.Close False
     
    End Sub
    La variable Choix2 correspond à un nom de personne choisit dans une liste du formulaire. Et ça doit être concaténé avec la date, et tout ça forme le nom du fichier Excel.
    Si je mets que Choix2, ça marche impec. Le fichier excel prend le nom de Choix2 (et Choix2 fait référence aussi à une cellule fusionnée).

    Pour la variable Choix, c'est la concaténation de G6 H6 I6 qui se trouve sur la feuille "Demande".

    Il faudrait une fonction qui affiche la date sous le format jj-mm-aaaa et non jj/mm/aaaa

  8. #8
    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 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LaDate = Format(Now, "dd-mm-yyyy")
    Tu peux essayer...

    A+

  9. #9
    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 040
    Points
    20 040
    Par défaut
    Citation Envoyé par wanou44
    Il faudrait une fonction qui affiche la date sous le format jj-mm-aaaa et non jj/mm/aaaa
    la dite fonction as un nom compliqué sous excel : FORMAT

    voir

    [Edit] ouskel'n'or m'as devancé...

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 143
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par bbil
    Citation Envoyé par wanou44
    Il faudrait une fonction qui affiche la date sous le format jj-mm-aaaa et non jj/mm/aaaa
    la dite fonction as un nom compliqué sous excel : FORMAT

    voir

    [Edit] ouskel'n'or m'as devancé...
    Désolé mais cette fonction je ne l'ai pas trouvé. Par contre ce que m'as passé ouskel'n'or marche impec.
    J'ai maintenant mon fichier en sortie qui est sous la forme "jj-mm-aaaa - Nom Prénom.xls"

    Maintenant, vu que j'ai pas encore fini quelques détails, le fichier excel qui sort de cette fonction a encore le bouton "Exécuter". J'aimerais qu'il s'enlève et à la place mettre un bouton "Valider".

    Avez-vous une idée pour comment faire ?

  11. #11
    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 546
    Points
    15 546
    Par défaut
    Oui, et si j'ai bien compris, (enfin...)
    LaDate = cstr(Cells(6,7).value)+"-"+cstr(Cells(6,8).value)+"-"+cstr(Cells(6,9).value)

    J'ai un trou pour formater directement la date à partir de trois valeurs (jour mois année) mais je sais que ça existe, je te laisse le chercher.

    A+

  12. #12
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 143
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par ouskel'n'or
    Oui, et si j'ai bien compris, (enfin...)
    LaDate = cstr(Cells(6,7).value)+"-"+cstr(Cells(6,8).value)+"-"+cstr(Cells(6,9).value)

    J'ai un trou pour formater directement la date à partir de trois valeurs (jour mois année) mais je sais que ça existe, je te laisse le chercher.

    A+
    Oui merci beaucoup ça marche très bien.
    Mais maintenant j'aimerais dans le fichier de sortie soit afficher un bouton cliquable qui était caché pour le moment soit en créer un nouveau (et par la même occasion effacer l'ancien bouton) et biensûr lui attribué aussi un code en vb.

  13. #13
    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 546
    Points
    15 546
    Par défaut
    Tu veux dire dans le fichier que tu viens d'enregistrer et de fermer ? (cf - ton code)
    Alors déjà, faut pas le fermer

    Mais réponds malgré tout...

    A+

  14. #14
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 143
    Points : 38
    Points
    38
    Par défaut
    Alors j'ai réussi une petite partie.
    J'ai créé un deuxième bouton "Valider" que j'ai mis non visible.
    Le fichier excel de base ne doit jamais changer.

    La personne remplit donc les champs clique sur Exécuter, le fichier s'enregistre avec date, nom et prénom de la personne. Le bouton "Exécuter" devient invisible et le bouton "Valider" devient visible.
    Le fichier de sortie correspond bien à ce que je veux mais c'est le fichier de base qui change. Si quelqu'un l'ouvre après, il verra le bouton Valider (alors qu'il doit être invisible). La propriété Visible du bouton se change tout seul.

    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
    15
    16
    17
    18
    19
    20
     
    Private Sub Executer_Click()
     
    Valider.Visible = True
    Executer.Visible = False
     
    LaDate = Format(Now, "dd-mm-yyyy")
    Choix2 = Range("G8")
    Choix = LaDate & " - " & Choix2
     
    ActiveSheet.Copy ' crée un classeur avec la feuille active
    ActiveSheet.Protect Scenarios:=True, UserInterfaceOnly:=True
    With ActiveWorkbook
    .SaveAs Filename:="P:\PRIOUL" & "\" & Choix
    .Close ' si nécessaire
    End With
     
    ThisWorkbook.Close False
     
    End Sub

  15. #15
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 143
    Points : 38
    Points
    38
    Par défaut
    J'ai rien dit ça marche impec.
    Je viens de réessayer et pas de problème.
    J'ai du m'embrouiller à force d'enregistrer, fermer, supprimer, copier, ...

  16. #16
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 143
    Points : 38
    Points
    38
    Par défaut
    Il reste juste un détail.
    Le fichier de sortie est entièrement vérouillé mais j'aimerais que seulement 2 cellules ne le soit pas.

  17. #17
    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 546
    Points
    15 546
    Par défaut
    Enregistre la macro :
    Tu sélectionnes tour à tour tes cellules, tu vas dans format de cellule, tu déverrouilles (décoche verrouillé)
    Ensuite, tu protèges ta feuille
    Le tout est joué...

    Faut tout y dire à çui-là...

    A+

  18. #18
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 143
    Points : 38
    Points
    38
    Par défaut
    Ah oui tout bêtement, j'allais chercher plus loin.


    Citation Envoyé par ouskel'n'or

    Faut tout y dire à çui-là...
    Je trouve que c'est quand même pas mal ce que j'ai fais, pour une personne qui connaissait pas grand chose au VB ce matin ?!

  19. #19
    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 546
    Points
    15 546
    Par défaut
    ouskel'n'or a écrit:
    Faut tout y dire à çui-là...
    wanou44 a écrit :
    Je trouve que c'est quand même pas mal ce que j'ai fais, pour une personne qui connaissait pas grand chose au VB ce matin ?!
    Ouskel'n'or répond :
    C'est pas du VB, c'est du VBA...
    ... et c'est même pas du VBA, c'est de l'Excel...

    Mais si ça a pu t'aider...

    A+

Discussions similaires

  1. Récupérer valeur cellule dans classeur
    Par ericdev67 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 17/03/2008, 00h54
  2. Comment récupérer valeur cellule d'un gridview?
    Par cortex024 dans le forum ASP.NET
    Réponses: 9
    Dernier message: 23/03/2007, 14h31
  3. [VBA-E]Récupérer valeur d'une liste
    Par pitfrank dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2007, 17h21
  4. [VBA-E]Récupérer position cellule
    Par 0xYg3n3 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 18/04/2006, 12h14
  5. [POI]Récupérer valeur cellule suivant format
    Par leminipouce dans le forum Documents
    Réponses: 1
    Dernier message: 27/10/2005, 08h52

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