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:

Pierrot93

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

Re,

bah... à priori aucune condition n'est mise sur cette instruction... donc création d'onglet systèmatique....
Sheets.Add After:=Sheets(Sheets.Count)
 

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
 

Nelly14

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

Re,

bah... à priori aucune condition n'est mise sur cette instruction... donc création d'onglet systèmatique....


Re, donc il me suffit d'ajouter une condition :

grossièrement "SI présence de MMO ou MMI, exit sub" ?
 

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
@+
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas