Condition en VBA

BAT

XLDnaute Occasionnel
ReBonjour à tous !

Cette fois j'ai une macro que j'ai créé de moi m^me (grace au forum) mai que je n'arrive pas à réadapter à un autre cas. Son principe est de stopper la macro si une conditino n'est pas remplie.

Je souhaite la même chose mais qui stoppe la macro si le presse papier est vide ou pas adapté ! En gros c'est un test pour éviter le BUG VBA suivant :
"La méthode paste de la classe Worksheet à échouée"

Comment dois-je adapter mon code pour que ca marche ? Le principe de la macro dans laquelle s'intègre ce code est le suivant : L'opérateur selectionne toutes les données d'une feuille Excel (2 fois CTRL + A) et les copie (CTRL+ C). Ensuite il appuie sur le bouton macro qui effectue ensuite une série d'opération. La première de ces opérations est de coller le résultat de son coller dans une feuille. Comme l'utilisateur peux se planter en ne copiant pas ou mal les données je souahite bloquer la macro par se test !

Le bout de macro dont je parle est le suivant:
If Range("A1") <> "NO_FOUR" Then
MsgBox "Attention - Mauvaise requête - Veuillez vérifier l'extraction", vbExclamation, "Attention"
Sheets("MENU").Select
Exit Sub
End If
If Range("A1") <> "" Then

Voilà ! Si vous avez une solution pour moi, elle sera la bienvenu ! Merci à tous !
 

Luki

XLDnaute Accro
Re : Condition en VBA

Bonjour Bat,

Pas tout compris mais:

tu peux essayer :

Code:
on error resume next  [B]' désactivation de  la gestion d'erreur[/B]
  [COLOR=Blue][B]Ton code qui risque de générer une erreur ici[/B][/COLOR]
  If err.number <>0 then exit sub  [B]' la récupération de l'erreur et sortie macro[/B]
On error goto 0   [COLOR=Red][B] ' la réactivation de la gestion d'erreur standard[/B][/COLOR]

A+
 

mutzik

XLDnaute Barbatruc
Re : Condition en VBA

Bonjour Bat,

les données à copier sont-elles toujours les mêmes, de la même taille, au même endroit, ou est-ce qu'elles 'grandissent' en fonction de ...

Si la taille des données suit une logique, on peut automatiser la tache sans que l'utilisateur ait à sélectionner une 'zone' (ou plusieurs)
 

porcinet82

XLDnaute Barbatruc
Re : Condition en VBA

Salut,

Tu veux bloquer l'execution de la macro dans quelle condition exactement ?
Parce que tes explications sont un peu vague. Tu veux que la macro soit declancher lorsque le nombre de cellules selectionnées est supérieur à un certains nombre? Il faut que certaines cellules soients obligatoirement copiées?
Pourquoi est-ce que la copie ne se ferait pas dans le code de la macro, plutot que de le faire faire par la personne ?
Dis nous en plus afin qu'on puisse adapter directement...

@+

Edition : Salutation a Luc et Bertrand qui ont ete un peu plus rapide...
 
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Condition en VBA

ReBonjour à tous !

Cette fois j'ai une macro que j'ai créé de moi m^me (grace au forum) mai que je n'arrive pas à réadapter à un autre cas. Son principe est de stopper la macro si une conditino n'est pas remplie.

Je souhaite la même chose mais qui stoppe la macro si le presse papier est vide ou pas adapté ! En gros c'est un test pour éviter le BUG VBA suivant :
"La méthode paste de la classe Worksheet à échouée"

Comment dois-je adapter mon code pour que ca marche ? Le principe de la macro dans laquelle s'intègre ce code est le suivant : L'opérateur selectionne toutes les données d'une feuille Excel (2 fois CTRL + A) et les copie (CTRL+ C). Ensuite il appuie sur le bouton macro qui effectue ensuite une série d'opération. La première de ces opérations est de coller le résultat de son coller dans une feuille. Comme l'utilisateur peux se planter en ne copiant pas ou mal les données je souahite bloquer la macro par se test !

Le bout de macro dont je parle est le suivant:


Voilà ! Si vous avez une solution pour moi, elle sera la bienvenu ! Merci à tous !
Salut
P'vez répéter la question ?!? :confused:
(2 fois CTRL + A) :eek: il est bègue ?

Question bête : Si je comprends (mal) l'opération
Sélection de toute la feuille
clic sur bouton qui lance la macro
vérification de la validité des manips précédentes

Pourquoi pas ?
clic sur bouton qui lance la macro
vérification de la validité de l'opération
sélection de la feuille par la macro

Sinon, si tu as plusieurs valeurs à tester sur A1, tu peux utiliser Select Case, en tenant compte du fait que la première vérification bonne arrête le contrôle de la variable
Select Case Trim(Ucase(Range("A1")))
case ""
__ effectuer manip case vide
Case "NO_FOUR"
__ effectuer manips case "NO_FOUR"
CaseElse
__ Effectuer les manips ne répondant à aucun des critères précédents
End Select
A+
 

BAT

XLDnaute Occasionnel
Re : Condition en VBA

oulala ! j'ai du mal à m'exprimmer moi ! oublié le post précédent :eek:

En fait, voici le détail des actions :

Opérateur :
- J'ai une extraction Excel d'un de mes sytèmes d'exploitation.
- Je copie toute la feuille.
- j'ouvre le fichier avec ma macro (sauf si déjà ouvert)
- Je clique sur le bouton macro qui va faire la suite des opérations.

La macro (qui vien de se faire cliquée !!)
- elle colle automatiquement les données copiées par l'opérateur dans une feuille intitulée extraction.
- elle mets à jours des TCD

Ce que je souhaite rajouter à la macro :
- dans le cas ou l'opérateur est t^te en l'air, il sélectionne mais oubli de copier. La macro vas alors sortir l'erreur
"la méthode paste de la classe worksheet à échouée"
et alors le débogage se lance !!
- Ainsi je veux un bout de code qui test et qui arrête l'opération si le presse papier ou je ne sais pas quoi est vide ! Sachant que j'ai déjà un code test (celui que j'ai donné tout à l'heure) qui vérifie si ce sont les bonnes infos qui on étées collées (test de la cellule A1).

Voilà ! dite moi si c'est plus compréhensible ! merci de votre patitence

PS j'ai essayé le test on error resume mais en vain !
 
Dernière édition:

Luki

XLDnaute Accro
Re : Condition en VBA

Re Bat, le fil

Dans le cas "on error resume next" il ne s'agit pas d'un test mais de récupérer l'erreur et d'arrêter la macro dans ce cas au moment du collage des données, puisque il semble que c'est là que ça plante. Mais il est possible que ça plante ailleurs. N'ayant pas le code complet, difficile à savoir

Dans ton je pense que ça devrait ressembler à:

Code:
 on error resume next  ' désactivation de  la gestion d'erreur

Sheets(n).paste  ' à adapter dans ton cas
  
  If err.number <>0 then exit sub  ' la récupération de l'erreur et sortie macro
On error goto 0

A+
 

Statistiques des forums

Discussions
312 429
Messages
2 088 350
Membres
103 823
dernier inscrit
ben talha redouane