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

Excel Discussion :

Arrêter une macro puis la reprendre après avoir cliquer sur un CommandButton


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 19
    Points : 14
    Points
    14
    Par défaut Arrêter une macro puis la reprendre après avoir cliquer sur un CommandButton
    Bonjour à tous,

    Je pense (j'espére) que la solution à mon problème est simple. Je souhaite arrêter ma macro pour que l'utilisateur puisse remplir des cellules, et une fois les cellules remplient qu'il clique sur un CommandButton pour que la macro continue son parcours. Voici mon code avec en rouge le code pour le soit disant bouton

    Je pense que mon erreur est tout simplement dans la détection du bouton (voir bout de code tout en bas)

    Si quelqu'un à une solution ou une autre idée pour avoir le même résultat !

    En remerciant d'avance les lecteurs !

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    Option Explicit
    Dim Continue As Boolean
    
    Sub NouvellePresentation2()
    Dim PptApp As PowerPoint.Application
    Dim PptDoc As PowerPoint.Presentation
    Dim Diapo As PowerPoint.Slide
    Dim Sh As PowerPoint.Shape
    Dim Cs1 As ColorScheme
    Dim NbShpe As Integer
    Dim Counter As Integer
    Dim retailer As String
    
    
    Dim Feuille As Worksheet
    Set Feuille = Worksheets("Retailer Analysis")
    
        'Ecriture feuille source
    Dim SourcesListe As Worksheet
    Dim Obj As Object
    
        Set SourcesListe = Sheets.Add(After:=Sheets(Sheets.Count))
    
        SourcesListe.Name = "Sources"
        
        SourcesListe.Range("C1").Value = "Please fill the list of retailers in column A"
        SourcesListe.Range("C5").Value = "Have you finish to fill the list?"
        SourcesListe.Range("C6").Value = "Then click here --->"
    Set Obj = SourcesListe.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=190.5, Top:=75.75, Width:=37.5, Height:=30.75)
        Obj.Name = "CommandButton1"
        'buttonn text
        ActiveSheet.OLEObjects(1).Object.Caption = "Yes"
        
        'STOP
    While Not Continue
        DoEvents
    Wend
    
    Set PptApp = CreateObject("Powerpoint.Application")
    Set PptDoc = PptApp.Presentations.Add
            
    
    With PptDoc
        
     '--- Ajoute un Slide
        .Slides.Add Index:=1, Layout:=ppLayoutBlank
        'Crée une zone de texte (AddLabel)
        Set Sh = .Slides(1).Shapes.AddLabel(Orientation:=msoTextOrientationHorizontal, _
            Left:=100, Top:=100, Width:=150, Height:=60)
        'insère la valeur de la Cellule A1 dans une zone de texte
        Sh.TextFrame.TextRange.Text = Range("A1")
        'Modifie la couleur du texte
        Sh.TextFrame.TextRange.Font.Color = RGB(255, 100, 255)
        
        
        For Counter = 1 To 3
        retailer = Worksheets("Sources").Cells(Counter, 1)
               
     
        '--- Ajoute un nouveau slide et le positionner en 2eme position
        Set Diapo = .Slides.Add(Index:=2, Layout:=ppLayoutBlank)
        
        '--- Premier changement
        Feuille.PivotTables("PivotTable1").PivotFields("retailer_name").ClearAllFilters
        Feuille.PivotTables("PivotTable1").PivotFields("retailer_name").CurrentPage = retailer
    
     
        'copie le 1er graphique contenu dans la feuille Excel active
        Feuille.ChartObjects(1).Activate
        ActiveChart.ChartArea.Select
        ActiveChart.CopyPicture Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
        'collage dans la 2eme diapositive
        PptDoc.Slides(2).Shapes.Paste
        
     
        'Compte le nombre de shapes dans la diapositive:
        'le dernier objet inséré correspond à l'index le plus élevé
        NbShpe = Diapo.Shapes.Count
     
        'Renomme et met en forme l'objet collé
        With Diapo.Shapes(NbShpe)
            .Name = "monGraph" 'personnalise le nom
            .Left = 150 'définit la position horizontale dans le slide
            .Top = 100 'définit la position verticale dans le slide
            .Height = 300 'hauteur
            .Width = 400 'largeur
        End With
        Next Counter
    
     
        
    End With
     
     
    'Sauvegarde la présentation
    'dans le meme répertoire que le classeur excel contenant la macro.
    PptDoc.SaveAs Filename:=ThisWorkbook.Path & "\" & "NouvellePresentation.ppt"
    'ferme la presentation
    PptDoc.Close
    'ferme powerpoint
    PptApp.Quit
     
    MsgBox "Opération terminée."
    End Sub
    Private Sub CommandButton1_Click()
        Continue = True
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce bouton est-il impératif ?
    Il y a d'autres possibilités comme Inputbox, UserForm modale ou pas.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Non du tout, mais c'est la seule solution que j'ai trouvé pour pouvoir faire ce que je veux.

    Ce qui est impératif c'est que la macro s'arrête le temps que le User puisse remplir la colonne A avec les noms qu'il/elle veut (ces noms sont ensuite reprise par la variable retailer) et que la macro reparte là ou elle s'est arrêtée pour pouvoir créé le PowerPoint.

    Si tu as une autre idée pour faire cela je suis tout ouie !

  4. #4
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Bonsoir,
    Amitiés à Philipe au passage.
    Citation Envoyé par SPG except in VBA Voir le message
    Non du tout, mais c'est la seule solution que j'ai trouvé pour pouvoir faire ce que je veux.

    Ce qui est impératif c'est que la macro s'arrête le temps que le User puisse remplir la colonne A avec les noms qu'il/elle veut (ces noms sont ensuite reprise par la variable retailer) et que la macro reparte là ou elle s'est arrêtée pour pouvoir créé le PowerPoint.

    Si tu as une autre idée pour faire cela je suis tout ouie !
    Et si le user ne valide jamais ?
    La simplicité semble être le défi non surmontable des débutants !
    Pourquoi alourdir ton code par la création dynamique alors que tu peux le créer en mode création et le laisser là masquer pour l'afficher au besoin ?
    Etonnant que tu n'aies pas trouvé satisfaction dans les gestionnaires d'évènements WorkSheet..., WorkBook..., pour éviter ta solution (qui te semble incontournable) peu utile pour le cas.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Après quelques recherches je vais utiliser un Userform pour arranger une feuille puis lancer la macro que je veux !

    J'aurais une question par rapport au Userform d'ailleurs. Peut on ouvrir des excels depuis un userform?

    Je m'explique. Pour faire fonctionner ma macro je dois ouvrir 2 différents excel dont les noms change toutes les semaines car ce sont des rapports hebdomadaires. Serait-il donc possible depuis mon user de sélectionner, avec un explorateur windows par exemple, les 2 fichiers qui seront ouvert au début de ma macro ? Et selon les fichiers sélectionnés incorporé les chemins "C\..." dans ma macro pour qu'elle marche.

    J'ai fait des reccherches en Francais et en Anglais mais je n'ai rien trouvé qui combine les deux, ou combinable.

    Merci encore pour vos conseils ! C'est vrai qu'au fur et à mesure que je découvre le VBA, il y a des façon tellement simple de faire certaine chose...mais je n'y aurait pas pensé avant ^^

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'aurais une question par rapport au Userform d'ailleurs. Peut on ouvrir des excels depuis un userform?
    Un UserForm est une interface entre l'homme et la machine et tu peux y placer toutes les instructions que tu souhaites et notamment ouvrir un ou plusieurs classeurs.
    A lire Utiliser les UserForm en VBA Excel et Utiliser les contrôles dans un UserForm, en VBA Excel

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour Ousmane
    Amitiés à Philipe au passage.
    Mes amitiés également.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Merci, je vais éplucher tout ça !

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

Discussions similaires

  1. Rester sur l'onglet actif après avoir cliquer sur un bouton submit
    Par gasquy dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/10/2011, 08h56
  2. Réponses: 1
    Dernier message: 22/07/2011, 19h46
  3. Réponses: 1
    Dernier message: 12/04/2010, 15h46
  4. Afficher un message, après avoir cliquer sur FERMER
    Par horse dans le forum Débuter
    Réponses: 2
    Dernier message: 05/04/2010, 03h08
  5. Réponses: 1
    Dernier message: 11/05/2009, 20h33

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