Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/10/2011, 21h04   #1
Invité régulier
 
Inscription : août 2009
Messages : 23
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 23
Points : 9
Points : 9
Par défaut Bouton annuler et Exit Sub

Bonjour,

J'ai écrit le code ci-dessous avec la gestion d'erreur si ce n'est pas une date qui est saisie.
Code :
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
Sub Date_Connexion()
 
Dim DateConnexion As Date
Dim Lignefin As Integer
 
On Error GoTo erreur_date
 
'La sélection se fait sur la date de clôture dans l'extranet
 
DateConnexion = InputBox("Quelle est la date de dernière connexion souhaitée ? (jj/mm/aa)", "Date dernière connexion")
Range("D2").Value = "Inscrit après le " & DateConnexion
Columns("D:D").EntireColumn.autofit
 
Lignefin = ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Row
For i = 3 To Lignefin
    If Range("C" & i).Value < DateConnexion Then
        Range("D" & i).Value = "NON"
        Else: Range("D" & i).Value = ""
    End If
Next i
 
Exit Sub
 
erreur_date:
MsgBox ("Vous devez saisir une date au format jj/mm/aa")
Resume
 
End Sub
Par contre je ne sais pas sortir si l'utilisateur clique sur annuler.

En effet si je mets
Code :
if DateCOnnexion="" then Exit Sub
Le programme saute jusqu'au Exit Sub et m'affiche en boucle la msgbox.

Quelqu'un aurait-il une idée ?

Cdlt.
Scrabblouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 21h31   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonsoir,
Oui, tu boucles sur l'InputBox jusqu'à récupérer une saisie correcte, sinon, mets :

Code :
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
Sub Date_Connexion()
 
Dim DateConnexion As Date
Dim Lignefin As Integer
 
On Error GoTo erreur_date
 
'La sélection se fait sur la date de clôture dans l'extranet
 
DateConnexion = InputBox("Quelle est la date de dernière connexion souhaitée ? (jj/mm/aa)", "Date dernière connexion")
Range("D2").Value = "Inscrit après le " & DateConnexion
Columns("D:D").EntireColumn.AutoFit
 
Lignefin = ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Row
For i = 3 To Lignefin
    If Range("C" & i).Value < DateConnexion Then
        Range("D" & i).Value = "NON"
        Else: Range("D" & i).Value = ""
    End If
Next i
 
Exit Sub
 
erreur_date:
MsgBox ("Vous devez saisir une date au format jj/mm/aa")
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 22h59   #3
Invité régulier
 
Inscription : août 2009
Messages : 23
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 23
Points : 9
Points : 9
Bonsoir,

Merci, mais en enlevant le "Resume" je n'ai plus de boucle infinie si l'utilisateur clique sur annuler par contre je perd également la boucle tant que la saisie est incorrecte.

En résumé, ce que je souhaiterais c'est :
1. Boucler tant que la saisie est incorrecte.
2. Sortir de la macro si le bouton "Annuler" est cliqué.

Bonne soirée.
Scrabblouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 23h33   #4
Invité régulier
 
Inscription : août 2009
Messages : 23
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 23
Points : 9
Points : 9
Ca y est j'ai trouvé la solution.

Au lieu d'utiliser la fonction Inputbox j'utilise la méthode Inputbox.

Ca à l'air pareil mais ne l'est pas. Voici ce que ça donne :
Code :
1
2
3
DateConnexion = Application.InputBox _
("Quelle est la date de dernière connexion souhaitée ? (jj/mm/aa)", "Date dernière connexion")
If DateConnexion = False Then Exit Sub
Cdlt.
Scrabblouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h17.


 
 
 
 
Partenaires

Hébergement Web