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

  • Initiateur de la discussion Initiateur de la discussion Nelly14
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

Nelly14

Guest
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.
 
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:
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 🙂
 
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 modification par un modérateur:
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
 
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
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

N
Réponses
1
Affichages
963
D
Réponses
6
Affichages
5 K
Flow0812
F
N
Réponses
2
Affichages
700
N
K
Réponses
0
Affichages
3 K
K
T
Réponses
22
Affichages
6 K
Thibault LB
T
H
Réponses
0
Affichages
12 K
Harelde
H
Retour