je voudrais faire un message d'erreur

B

bertgrav

Guest
bonjour,

dans un logiciel autre qu'Excel je viens copier des données,

à l'aide d'une macro, je viens faire un COLLER dans une feuille, où s'effectuent des calculs etc...etc...
la macro fonctionne trés bien
excepté que je voudrais si je n'ai pas fait le COPIER avoir un message
du type Msgbox ('vous n'avez pas fait un COPIER avant !'

actuellement j'ai un message qui me renvoie vers la MACRO pour déboguer.

j'ai essayé de mettre en début et fin ces données:

Application.DisplayAlerts = False
Application.DisplayAlerts = True

c'est bien mais je ne suis pas averti qu'il y a eu une erreur

n'existe t il pas une donnée du style ON ERROR GOTO...
puis afficher un message et aller à la fin

VOICI LA MACRO DANS SON INTEGRALITE;

Sub ajouter()
Dim I As Integer, X As Integer
Dim Quoi As String, Qui As String

LIGNETOTAL1 = Feuil1.Range('F65535').End(xlUp).Row
Range('A' & Mid(ActiveSheet.UsedRange.Address, InStrRev(ActiveSheet.UsedRange.Address, '$') + 1)).Offset(1, 0).Select
ActiveSheet.Paste

MON PROBLEME DE MACRO EST ICI SI LE COPIER N'A PAS ETE FAIT AVANT: je voudrais afficher un message et aller à la fin ensuite

ActiveCell.EntireRow.Delete
fin = Feuil1.Range('F65535').End(xlUp).Row
réponse = MsgBox('avez-vous copié ce que vous demandiez ?', 292, 'question')

If réponse = vbYes Then
For I = fin To 2 Step -1
Quoi = UCase(Feuil1.Range('F' & I).Value)
For X = I - 1 To 2 Step -1
Qui = UCase(Feuil1.Range('F' & X).Value)
If Quoi = Qui Then
Rows(X & ':' & X).Select
Selection.Delete Shift:=xlDown
End If
Next
Next
LIGNETOTAL2 = Feuil1.Range('F65535').End(xlUp).Row
MsgBox ('Nombre avant : ' & LIGNETOTAL1 - 1 & vbNewLine & vbNewLine & 'Nombre aprés extraction BO : ' & LIGNETOTAL2 - 1 & vbNewLine & vbNewLine & 'Nombre lignes ajoutées à la liste : ' & LIGNETOTAL2 - LIGNETOTAL1)
Else
Selection.EntireRow.Delete
MsgBox ('le collage a été annulé, reprenez les opérations depuis le début')
End If


End Sub


amicalement

chantal
 

Creepy

XLDnaute Accro
Bonsoir le Forum, Bertgrav

On debut de ta macro tu mets :

on error goto GEstErr

A la fin de ta macro ici :

End If
End Sub


Fait ca :

End If
Exit Sub

gesterr:
Msgbox 'Erreur'

End Sub

Par contre ca va 'tilter' pour chaque erreur et pas seulement pour ton erreur de copier/coller

@+

Creepy
 

Hellboy

XLDnaute Accro
Bonsoir bertgrav, Creepy

Une autre méthode est l'utilisation de l'objet clipboard(presse-papier).
Ce qui faut savoir, lorsque tu fais un copier, les informations vont dans ce qu'on appel le presse papier. Il est possible de savoir si le presse-papier contien de l'information. Ce qu'il faut faire attention, c'est que si ta macro se déroule comme prévu, il faut que tu t'assure de vider le presse-papier après pour être sur que lorsque tu la rappelera, tu n'aura pas l'information du copier lors du passage précédant.

Je te donne les deux procédures qui te serons nécessaire pour accomplir ce dont je parle.et les deux ligne de commande supplémentaires pour faire le truc. Tu peux insérer dans ton module ou il y a ta macro, ceux que je te donne.



If Not GetOffClipboard() = Empty Then
        ActiveCell.EntireRow.Delete
        fin = Feuil1.Range('F65535').End(xlUp).Row
        réponse = MsgBox('avez-vous copié ce que vous demandiez ?', 292, 'question')
       
' reste du code
       
Call ClearClipboard
Else
        MsgBox ' Pas fait le copier !!!'
End If


Private MyDataObj                    As New DataObject

'    Cette routine permet de récupérer l'information du Presse-papiers

Public Function GetOffClipboard() As String
   
With MyDataObj
            .GetFromClipboard
       
On Error Resume Next
            GetOffClipboard = .GetText()
   
End With
   
On Error GoTo 0
End Function

'    Cette routine permet de vider le Presse-papiers

Public Sub ClearClipboard()
   
With MyDataObj
            .SetText Empty
            .PutInClipboard
   
End With
End Sub

Message édité par: Hellboy, à: 26/09/2005 23:08
 

Discussions similaires

Statistiques des forums

Discussions
312 396
Messages
2 088 041
Membres
103 706
dernier inscrit
lolaLb02