Résolu Affichage d'un message avec MsgBox

  • Auteur de la discussion steph_20
  • Date de début

steph_20

Nouveau membre
Bonjour,
j'ai réalisé une macro qui me permet de selectionner des données à partir d'une plage de cellules et les copier dans des plages de cellules bien données;mais à une condition:
La macro vérifie que le numero facture n'existe pas déja:
si oui la macro s'exécute.
Si non la macro ne s'exécute pas et on sort du programme.
La macro marche sans probleme;mais je souhaite que dans le cas où la macro ne s'exécute pas,je veux que la macro affiche ce message à l'écran:"ATTENTION!!! Ce N°_Facture existe déja!" avant de sortir du programme.
Comment faire car j'ai essayé mais je n'arrive pas! voici ce que j'ai trouvé:

[cpp]Sub Macro1()
'
' Macro1 Macro
'
' Touche de raccourci du clavier: Ctrl+Maj+Z

[cpp]Sheets("Retraitement_relevé").Select
Range("A6:E6").Select
Selection.Copy
Select Case Range("B3").Value
Case 1
'Num_Facture correspond au N° de facture à traiter
Num_Facture = Sheets("Retraitement_relevé").Range("C6").Value
Sheets("00001").Select
' Définition de la plage a regarder
Dim MaPlage As Range
Set MaPlage = Range("Liste_N°_facture")
' Boucle + Test si Facture existe déjà
For Each Cell In MaPlage
ValeurCellule = Cell.Value
'Si Facture trouvée.. on affiche "ATTENTION!!! Ce N°_Facture existe déja!" et on sort du programme
If Cell.Value = Num_Facture Then
MsgBox "ATTENTION!!! Ce N°_Facture existe déja!"
Exit Sub
End If

Next
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Case 2
'Num_Facture correspond au N° de facture à traiter
Num_Facture = Sheets("Retraitement_relevé").Range("C6").Value
Sheets("00002").Select
' Définition de la plage a regarder
Set MaPlage = Range("Liste_N°_facture")
' Boucle + Test si Facture existe déjà
For Each Cell In MaPlage
ValeurCellule = Cell.Value
'Si Facture trouvée.. on sort du programme
If Cell.Value = Num_Facture Then Exit Sub
Next
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Case 3
'Num_Facture correspond au N° de facture à traiter
Num_Facture = Sheets("Retraitement_relevé").Range("C6").Value
Sheets("00003").Select
' Définition de la plage a regarder
Set MaPlage = Range("Liste_N°_facture")
' Boucle + Test si Facture existe déjà
For Each Cell In MaPlage
ValeurCellule = Cell.Value
'Si Facture trouvée.. on sort du programme
If Cell.Value = Num_Facture Then Exit Sub
Next
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Select
End Sub[/cpp][/cpp]Mon probleme est que le message ne s'affiche pas à l'écran dans le cas où la macro ne s'exécute pas.
Merci de m'aider.
 

zeb

Modérateur
Meilleure réponse
Salut

pffffffffffffff......

Alors d'abord, présente-nous un code correctement indenté. En l'état, c'est pratiquement illisible.

Ensuite, recherche si la facture existe ou pas avant de commencer la copie.
De plus, inutile de faire toutes ces sélections. Tu sais définir une variable (ligne 17), alors déclare ta source, ta cible, et fais ta copie sans faire de sélection.

Tu fais trois fois la même chose à l'exception du nom de la feuille. Utilise une variable.

A te lire.
 

LudoTools

Expert
Bonjour,
...dans le cas où la macro ne s'exécute pas, je veux que la macro affiche ce message...
:??: Si elle ne s'exécute pas, comment veux-tu qu'elle affiche quelque chose ?!!!

Avant de développer un bout de code, on pose son problème sur papier (à moins d'être "bon")...
 

zeb

Modérateur
Nan LudoToulz, il s'agit plus d'un problème d'expression écrite que de programmation :o
 

steph_20

Nouveau membre

 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 827
Membres
1 586 367
Dernier membre
ramkin
Partager cette page
Haut