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 :

Test de cellules vides et enregistrement automatique [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Par défaut Test de cellules vides et enregistrement automatique
    Bonjour,

    Je suis débutant en langage VBA et souhaiterais créer la Macro Excel suivante:

    - Afficher en permanence un bouton appelé "Save" sur un fichier.
    Si on clic sur ce bouton:

    1/ TEST:

    + Tester si les cellules A1, A2 et A3,A4 sont vides.
    + Si au moins une des cellules est vide, afficher un message suivant dans une fenetre (Selon qu'il y ait une
    cellule vide ou plusieurs) : "La (Les) cellule(s) A1 (,A2,A3...) est (sont) vide(s). Merci de bien vouloir les
    remplir."
    + Afficher dans la même fenêtre deux boutons:
    * Le 1er appelé "Save" permet d'enregistrer le fichier. (Voir le processus d'enregistrement décrit
    en 2/)
    * Le 2ème appelé "Continuer saisie" permet de fermer la fenêtre et de se placer sur la 1ere cellule
    vide rencontree parmis les cellules testées.
    + Si aucune de ces cellule est vide, passer au processus d'enregistrement (décrit en 2/)

    2/ PROCESSUS D'ENREGISTREMENT:

    + Enregistrer le fichier dans le répertoire existant nommé "REP1" sur le disque "DISK 1" en le nommant selon
    la manière suivante:
    * Le nom du fichier est :"Texte libre_Valeur de la cellule A5"
    + Envoyer un mail avec le fichier en pièce jointe:
    * l'adresse est dans la cellule B1, le sujet dans la B2 et le texte dans la B3
    + Afficher une fenêtre disant: "Le fichier a bien été enregistré et envoyé a destinataire."
    Dans cette, afficher un bouton OK.
    + Lorsque l'on clic sur OK, fermer le document.

    + Toute action via 'Menu' 'Enregistrer sous' provoque le même processus décrit en 2/.


    J'espère avoir été assez clair. Merci beaucoup d'avance pour votre aide tres précieuse


    Christophe

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut et bienvenu du coup, 2 messages, 2 travaux a faire
    Voir l'autre sujet (ça ne reste que mon avis bien sure...)
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Re

    Pareil que pour mon autre réponse aussi

    Pour les indices, un UserForm a l'air d'être utile ici : direction les tutos ou . Ils sera utilisé pour tes boutons de ta fenêtre. Pour le bouton Save ==> affichage/barre d'outils/formulaires. Tu choisis ton bouton et tu lui affectes ta macro principale. Pour les tests, j'en reviens à mon autre message.

    Pour la deuxième partie, fais donc cela plus tard quand tu seras plus familiarisé avec le VBA. Tu devras alors faire des recherches (c'est pas les infos qui manquent, ici ou sur ). Tu devras jeter un oeil sur l'envoi de mail par VBA (faisable mais plus compliqué déjà). Pour l'enregistrement, cf. Save et SaveAs comme je te l'avais déjà dit.

    Bonne chance !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Par défaut
    J'avance, Petit a petit. Merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Par défaut
    Je suis de nouveau bloque :

    Je n'arrive pas a sauvegarder mon fichier sous un repertoire que je choisi, avec le nom de la valeur deux cellules differentes.


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Option Explicit
     
    Sub TestVide()
        Dim TB As Variant
        Dim Message As String
        Dim i As Integer
     
        TB = Array("G8", "G9", "G11", "G12", "G18", "G19", "G20", "G29", "G30", "G35", "G36", "G37", "H42", "H43", "H44", "K35", "L18", "L19", "L20", "L29", "O11", "O12", "P18", "P19", "P20", "P22", "P30", "Q42", "Q43", "R42")
     
        For i = 0 To UBound(TB)
            If Range(TB(i)) = "" Then
                    Message = Message & vbCrLf & vbTab & TB(i)
            End If
        Next i
     
        If Message <> "" Then
                MsgBox "Following cells have not been filled:" & vbCrLf & Message & vbCrLf & vbCrLf & "Do you want to save it all the same?", vbYesNo + vbInformation + vbDefaultButton2, "File is not completely filled."
     
                If vbNo Then
                    For i = 0 To UBound(TB)
                        If Range(TB(i)) = "" Then
                        Exit For
                        End If
                    Next i
                        Application.Goto Reference:=ActiveSheet.Range(TB(i))
                        Exit Sub
                Else
                    GoTo Save
                End If
        Else
            GoTo Save
     
        End If
     
    Save:
     
    Dim MonFichier
    MonFichier = Range("G8").Value & Range("G12").Value & ".xls"
     
    ChDir "blabla"
    ActiveWorkbook.SaveAs Filename:=MonFichier, FileFormat:=xlNormal
     
    End Sub
    Peut etre la partie save est-elle bonne. J'ai peur de m'etre embrouille dans les Goto. Je sais ce n'ai pas une bonne habitude, mais je ne vois pas comment faire autrement...

    Merci pour votre aide!

  6. #6
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Pour la suite de tes petits pas, voici une piste pour l'histoire de ton mail.
    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
    EnvoiFichier()
     
      ' ENVOI PAR E-MAIL DU FICHIER :
     
      Dim MonOutlook As Object
      Dim MonMessage As Object
     
      Monfichier = "" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & "" 'Def le fichier en cours
      MonTo = Sheets("toto").Range("B1") 'Affecte l'adresse e-mail à la variable !!Enlevier l'hyperlien
      MonSujet = Sheets("toto").Range("B2") 'Affecte le sujet à la variable
      MonCorps = Sheets("toto").Range("B3") 'Affecte le texte à la variable
     
      Set MonOutlook = CreateObject("Outlook.Application")
      Set MonMessage = MonOutlook.createitem(0)
      MonMessage.to = MonTo
      MonMessage.Attachments.Add Monfichier
      MonMessage.Subject = MonSujet
      MonMessage.body = MonCorps
      MonMessage.send
      Set MonOutlook = Nothing
    End Sub
    A+

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut
    Pour ton problème de save, le mieux est de faire de l'exécution pas a pas.
    Pour se faire tu clique n'importe ou sur ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonFichier = Range("G8").Value & Range("G12").Value & ".xls"
    par exemple, ensuite tu vas dans Menu Débogage -> Basculer le point d'arrêt (ou alors touche F9, ou encore dans la zone de marge de l'éditeur, tu identifieras cette zone une fois le point rouge rajouter via le menu, il suffit de cliquer dans cette zone pour le mettre et l'enlever)
    Ensuite tu lances l'exécution de ton code, quand le programme arrivera sur le point rouge il fera un break, ensuite toujours dans Menu Débogage tu as Pas à Pas détaillé (ou touche F8), chaque appuis sur F8 exécute la ligne pointé et te feras passer a la ligne suivante dans l'ordre d'exécution, tu vas donc a la ligne suivante
    et tu met ton curseur de souris sur la variable MonFichier, une bulle s'ouvre avec la valeur contenu dans la variable, vérifies que le chemin est correct, si le chemin est trop long et donc tronqué tu cliques droit sur MonFichier ->Ajouter un espion -> Ok
    tu pourras ainsi contrôler la valeur que tu passes en paramètre un peu plus bas.

    Petite chose tes "Goto Save" ne servent a rien il faut supprimer les parties Else Goto Save.

    Dernière chose quand tu mets du code dans un message du forum, sélectionnes le bout de code et clique sur le bouton # du menu de l'éditeur de texte

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 20
    Par défaut
    Merci beaucoup Fvandermeulen. je n'en suis pas encore la, mais cela m'aidera surment.

    merci beaucoup Qwazerty. Probleme Resolu !

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

Discussions similaires

  1. Test colonne et ajout 1 à la dernière cellule vide
    Par timtof2011 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/10/2011, 22h44
  2. test si cellule non vide
    Par tibiscuit dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/06/2011, 20h03
  3. Test si cellule vide et décalage à gauche
    Par Lechette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/03/2008, 10h40
  4. Test si cellule est vide EXCEL POI JAKARTA
    Par skillipo dans le forum Documents
    Réponses: 2
    Dernier message: 13/03/2008, 13h03
  5. [VBA]Test cellule vide base access
    Par ALAMARQU dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/03/2006, 16h14

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