Empecher que la macro s'éxécute si valeur présente

Nelly14

XLDnaute Nouveau
Bonjour,

Je souhaiterais un renseignement concernant une macro excel.

Mon fichier est composé d'une unique colonne A avec plein de valeur en dessous.

Quand il y a présence des codes MMO ou MMI, cela me créé un onglet qui me reporte ces 2 codes.

Par contre, quand il n'y a pas présences de ces codes, cela me créé quand meme un onglet et m'affiche un message d'erreur : Erreur d'éxécution 91 - variable oblet ou variable de bloc With non définie.

Comment puis je modifier cela pour que la macro ne s'éxécute que SI il y a présence d'au moins un des 2 codes MMO ou MMI dans ma colonne A ?

Merci d'avance de votre aide.
 

Pierrot93

XLDnaute Barbatruc
Re : Empecher que la macro s'éxécute si valeur présente

Bonjour,

sans voir le code en question, cela va être difficile de te répondre...

bonne journée
@+

Edition : bonjour fg:), le plaisir est partagé
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Empecher que la macro s'éxécute si valeur présente

Bonjour Nelly14 et bienvenu sur le forum
Pourrais tu nous fournir un petit fichier exemple avec des données annonymes et le code que tu utilise, pour pouvoir faire des tests avant de faire une proposition?
Cordialement

EDIT Bonjour Pierrot, content de te croiser, ça faisait longtemps :)
 

Nelly14

XLDnaute Nouveau
Re : Empecher que la macro s'éxécute si valeur présente

Bonjour,

oops j'ai oublié de vous copier le code effectivement.

Code:
Sub test()


Sheets.Add After:=Sheets(Sheets.Count)
     Sheets(Sheets.Count).Name = "Erreur"

Sheets("Erreur").UsedRange.Clear
Set Cel = Sheets(1).Range("a1")
Set fcel = Sheets(1).UsedRange.Columns(1).Rows(Rows.Count).End(xlUp)


Set Cel = Sheets(1).Columns(1).Find("MMI")
debut = Cel.Row
Do
Call résultat(Cel)
Set Cel = Sheets(1).Columns(1).FindNext(Cel)
If debut = Cel.Row Then Exit Do
Loop



Set Cel = Sheets(1).Columns(1).Find("MMO")
debut = Cel.Row
Do
Call résultat(Cel)
Set Cel = Sheets(1).Columns(1).FindNext(Cel)
If debut = Cel.Row Then Exit Do
Loop

End Sub

Code:
Sub résultat(Cel)

phrase = Cel.Offset(3, 0).Value
moncode = Cel.Offset(4, 0).Value
codean = Cel.Offset(5, 0).Value

En fait le fichier est composé comme ceci:

Si MMO présent par exemple :

MMO
1
texte
phrase
moncode
codean

Dans l'onglet Erreur il me ressort :
phrase
moncode
codean


Cela marche bien quand j'ai des erreurs mais lorsque je n'ai aucune erreur, j'ai un message d'erreur.
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Empecher que la macro s'éxécute si valeur présente

Re
On ne s'est pas compris là
Peux tu nous donner La Totalité du code (ici il n'y a que le début de la sub résultat) ainsi qu'un fichier avec des données pour comprendre le pourquoi du comment.

P.S : Je peux déja te dire que "Sheets("Erreur").UsedRange.Clear" ne sert à rien puisque tu viens de la créer la Sheets("Erreur")).

Cordialement
 

Pierrot93

XLDnaute Barbatruc
Re : Empecher que la macro s'éxécute si valeur présente

Re,

essaye peut être cette instruction :
Code:
If Columns(1).Find("MMO", , xlValues, xlWhole, , , False) Is Nothing And _
    Columns(1).Find("MMI", , xlValues, xlWhole, , , False) Is Nothing Then Exit Sub
bon après midi
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 298
Messages
2 086 981
Membres
103 419
dernier inscrit
mk29