Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Stoper une macro, si conditions pas remplies ?

4 réponses
Avatar
DC
Bonjour, Excel 2000 sous XP

Voilà, j'aimerais pouvoir stoper une macro définitivement, si la condition
de chargement du classeur cible n'est pas remplies ( l'emplacement du stop
est simulé dans la procédure ci-dessous )
L'explication du pourquoi ! est d'éviter un écrasement des données dans le
classeur source,( travaillant en copier-coller, )

Merci d'avance de me venir en aide
'---------------------------------------------------------------
Sub Ligne_Seule()
'
' Ligne_Seule Macro
' Macro enregistrée le 22/11/2005 par Daniel
'
On Error GoTo Sortie
ActiveCell.Range("A1:N1").Select
Selection.Copy
ActiveCell.Range("A1").Select

ActiveWindow.ScrollRow = ActiveCell.Row - 4

ActiveWindow.ActivateNext
Cells(ActiveCell.Row, 1).Select
'************************( emplacement de blocage de la macro
si le second classeur n'est pas chargé, avec si possible une fenêtre de
signalisation de l'évènement )
'******************************************************
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(0, 7).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[4]*KF"
ActiveCell.Offset(0, 3).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-1]"
ActiveCell.Offset(0, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-4]*6.55957"
ActiveCell.Offset(0, -5).Range("A1").Select
ActiveCell = Application.InputBox(Prompt:="Entrer un nombre + OK...",
Title:="Quantité", Default:=1, Left:=383, Top:=-66, Type:=1)

ActiveCell.Offset(1, -9).Range("A1").Select
Set Ligne = Application.InputBox(Prompt:="OUI = Flèche Bas + OK...
NON = Annuler...(Esc)", Title:=" Continuer OUI ou NON",
Default:=ActiveCell.Offset(0, 0).Range("A1").Address, Left:=383, Top:=-66,
Type:=8)
Ligne.Select

ActiveWindow.ScrollRow = ActiveCell.Row - 12

Windows("Code-9.xls").Activate
Set Ligne = Application.InputBox(Prompt:="Sélection + OK... Pour
Arrêter = Annuler...(Esc)", Title:="Sélection H ou B avec les Flèches",
Default:=ActiveCell.Offset(1, 0).Range("A1").Address, Left:=383, Top:=-66,
Type:=8)
Ligne.Select

Application.Run "'Code-9.xls'!Ligne_Seule"

Sortie:
End Sub
'---------------------------------------------------------------------
Cordialement ! au plaisir de vous lire ! DC

4 réponses

Avatar
papou
Bonjour
Il suffit d'intégrer Exit Sub à l'endroit que tu détermines.

Cordialement
Pascal

"DC" a écrit dans le message de news:
461612be$0$25920$
Bonjour, Excel 2000 sous XP

Voilà, j'aimerais pouvoir stoper une macro définitivement, si la condition
de chargement du classeur cible n'est pas remplies ( l'emplacement du stop
est simulé dans la procédure ci-dessous )
L'explication du pourquoi ! est d'éviter un écrasement des données dans le
classeur source,( travaillant en copier-coller, )

Merci d'avance de me venir en aide
'---------------------------------------------------------------
Sub Ligne_Seule()
'
' Ligne_Seule Macro
' Macro enregistrée le 22/11/2005 par Daniel
'
On Error GoTo Sortie
ActiveCell.Range("A1:N1").Select
Selection.Copy
ActiveCell.Range("A1").Select

ActiveWindow.ScrollRow = ActiveCell.Row - 4

ActiveWindow.ActivateNext
Cells(ActiveCell.Row, 1).Select
'************************( emplacement de blocage de la macro
si le second classeur n'est pas chargé, avec si possible une fenêtre de
signalisation de l'évènement )
'******************************************************
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(0, 7).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[4]*KF"
ActiveCell.Offset(0, 3).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-1]"
ActiveCell.Offset(0, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-4]*6.55957"
ActiveCell.Offset(0, -5).Range("A1").Select
ActiveCell = Application.InputBox(Prompt:="Entrer un nombre + OK...",
Title:="Quantité", Default:=1, Left:83, Top:=-66, Type:=1)

ActiveCell.Offset(1, -9).Range("A1").Select
Set Ligne = Application.InputBox(Prompt:="OUI = Flèche Bas + OK... NON =
Annuler...(Esc)", Title:=" Continuer OUI ou NON",
Default:¬tiveCell.Offset(0, 0).Range("A1").Address, Left:83, Top:=-66,
Type:=8)
Ligne.Select

ActiveWindow.ScrollRow = ActiveCell.Row - 12

Windows("Code-9.xls").Activate
Set Ligne = Application.InputBox(Prompt:="Sélection + OK...
Pour Arrêter = Annuler...(Esc)", Title:="Sélection H ou B avec les
Flèches", Default:¬tiveCell.Offset(1, 0).Range("A1").Address, Left:83,
Top:=-66, Type:=8)
Ligne.Select

Application.Run "'Code-9.xls'!Ligne_Seule"

Sortie:
End Sub
'---------------------------------------------------------------------
Cordialement ! au plaisir de vous lire ! DC




Avatar
jps
ben oui, papou, mais si son classeur cible est bien chargé, il sortira aussi
de sa Sub et de cela, DC ne veut pas, me semble-t-il
en fait, cet ActivateNext ne me plaît pas dans cette proc ; il vaudrait
mieux nommer le fichier à activater et à partir de là, si ce fichier n'est
pas présent, un nouvel On Error GoTo Sortie devrait faire l'affaire...
jps
PS perso à Daniel J : bon, je t'autorise à dire que je suis (du verbe
"suivre") encore pas mal mais en aucun cas que je n'ai rien compis

"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:
OwOjx%
Bonjour
Il suffit d'intégrer Exit Sub à l'endroit que tu détermines.

Cordialement
Pascal

"DC" a écrit dans le message de news:
461612be$0$25920$
Bonjour, Excel 2000 sous XP

Voilà, j'aimerais pouvoir stoper une macro définitivement, si la
condition de chargement du classeur cible n'est pas remplies (
l'emplacement du stop est simulé dans la procédure ci-dessous )
L'explication du pourquoi ! est d'éviter un écrasement des données dans
le classeur source,( travaillant en copier-coller, )

Merci d'avance de me venir en aide
'---------------------------------------------------------------
Sub Ligne_Seule()
'
' Ligne_Seule Macro
' Macro enregistrée le 22/11/2005 par Daniel
'
On Error GoTo Sortie
ActiveCell.Range("A1:N1").Select
Selection.Copy
ActiveCell.Range("A1").Select

ActiveWindow.ScrollRow = ActiveCell.Row - 4

ActiveWindow.ActivateNext
Cells(ActiveCell.Row, 1).Select
'************************( emplacement de blocage de la macro
si le second classeur n'est pas chargé, avec si possible une fenêtre de
signalisation de l'évènement )
'******************************************************
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(0, 7).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[4]*KF"
ActiveCell.Offset(0, 3).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-1]"
ActiveCell.Offset(0, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-4]*6.55957"
ActiveCell.Offset(0, -5).Range("A1").Select
ActiveCell = Application.InputBox(Prompt:="Entrer un nombre + OK...",
Title:="Quantité", Default:=1, Left:83, Top:=-66, Type:=1)

ActiveCell.Offset(1, -9).Range("A1").Select
Set Ligne = Application.InputBox(Prompt:="OUI = Flèche Bas + OK... NON =
Annuler...(Esc)", Title:=" Continuer OUI ou NON",
Default:¬tiveCell.Offset(0, 0).Range("A1").Address, Left:83,
Top:=-66, Type:=8)
Ligne.Select

ActiveWindow.ScrollRow = ActiveCell.Row - 12

Windows("Code-9.xls").Activate
Set Ligne = Application.InputBox(Prompt:="Sélection + OK... Pour Arrêter
= Annuler...(Esc)", Title:="Sélection H ou B avec les Flèches",
Default:¬tiveCell.Offset(1, 0).Range("A1").Address, Left:83,
Top:=-66, Type:=8)
Ligne.Select

Application.Run "'Code-9.xls'!Ligne_Seule"

Sortie:
End Sub
'---------------------------------------------------------------------
Cordialement ! au plaisir de vous lire ! DC








Avatar
papou
Re
ben oui, c'est à DC de déterminer l'endroit et c'est bien ce que j'ai écrit
;-)
Il suffit d'intégrer Exit Sub à l'endroit que tu détermines
Ceci étant, je n'avais alors pas évoqué la méthode, il eut sans doute fallut

que je le précisasse.

A tout à l'heure ?

Cordialement
Pascal

"jps" a écrit dans le message de news:

ben oui, papou, mais si son classeur cible est bien chargé, il sortira
aussi de sa Sub et de cela, DC ne veut pas, me semble-t-il
en fait, cet ActivateNext ne me plaît pas dans cette proc ; il vaudrait
mieux nommer le fichier à activater et à partir de là, si ce fichier n'est
pas présent, un nouvel On Error GoTo Sortie devrait faire l'affaire...
jps
PS perso à Daniel J : bon, je t'autorise à dire que je suis (du verbe
"suivre") encore pas mal mais en aucun cas que je n'ai rien compis

"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:
OwOjx%
Bonjour
Il suffit d'intégrer Exit Sub à l'endroit que tu détermines.

Cordialement
Pascal

"DC" a écrit dans le message de news:
461612be$0$25920$
Bonjour, Excel 2000 sous XP

Voilà, j'aimerais pouvoir stoper une macro définitivement, si la
condition de chargement du classeur cible n'est pas remplies (
l'emplacement du stop est simulé dans la procédure ci-dessous )
L'explication du pourquoi ! est d'éviter un écrasement des données dans
le classeur source,( travaillant en copier-coller, )

Merci d'avance de me venir en aide
'---------------------------------------------------------------
Sub Ligne_Seule()
'
' Ligne_Seule Macro
' Macro enregistrée le 22/11/2005 par Daniel
'
On Error GoTo Sortie
ActiveCell.Range("A1:N1").Select
Selection.Copy
ActiveCell.Range("A1").Select

ActiveWindow.ScrollRow = ActiveCell.Row - 4

ActiveWindow.ActivateNext
Cells(ActiveCell.Row, 1).Select
'************************( emplacement de blocage de la macro
si le second classeur n'est pas chargé, avec si possible une fenêtre de
signalisation de l'évènement )
'******************************************************
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(0, 7).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[4]*KF"
ActiveCell.Offset(0, 3).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-1]"
ActiveCell.Offset(0, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-4]*6.55957"
ActiveCell.Offset(0, -5).Range("A1").Select
ActiveCell = Application.InputBox(Prompt:="Entrer un nombre + OK...",
Title:="Quantité", Default:=1, Left:83, Top:=-66, Type:=1)

ActiveCell.Offset(1, -9).Range("A1").Select
Set Ligne = Application.InputBox(Prompt:="OUI = Flèche Bas + OK... NON =
Annuler...(Esc)", Title:=" Continuer OUI ou NON",
Default:¬tiveCell.Offset(0, 0).Range("A1").Address, Left:83,
Top:=-66, Type:=8)
Ligne.Select

ActiveWindow.ScrollRow = ActiveCell.Row - 12

Windows("Code-9.xls").Activate
Set Ligne = Application.InputBox(Prompt:="Sélection + OK... Pour Arrêter
= Annuler...(Esc)", Title:="Sélection H ou B avec les Flèches",
Default:¬tiveCell.Offset(1, 0).Range("A1").Address, Left:83,
Top:=-66, Type:=8)
Ligne.Select

Application.Run "'Code-9.xls'!Ligne_Seule"

Sortie:
End Sub
'---------------------------------------------------------------------
Cordialement ! au plaisir de vous lire ! DC











Avatar
DC
Bonjour, papou et jps

Merci de vos réponses rapides à tous deux !

J'ai expérimenté le potitionnement de (Exit Sub) et éffectivement çà
fonctionne lors de la non présence du classeur cible, par contre çà fait la
même chose avec la présence du classeur cible, ( à voir )

Quand au ActivateNext, je vous est induit dans l'erreur, car au départ le
fichier se nomme toujours "Facturation" et c'est seulement par la suite
qu'il prend le nom du client, d'oû sa variabilité et la présence de
ActivateNext,

Je crois avoir bien éxécutés vos remarques sur la procédure ci-dessous,

Cordialement ! au plaisir de vous relire ! DC


"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:

Re
ben oui, c'est à DC de déterminer l'endroit et c'est bien ce que j'ai
écrit ;-)
Il suffit d'intégrer Exit Sub à l'endroit que tu détermines
Ceci étant, je n'avais alors pas évoqué la méthode, il eut sans doute

fallut que je le précisasse.

A tout à l'heure ?

Cordialement
Pascal

"jps" a écrit dans le message de news:

ben oui, papou, mais si son classeur cible est bien chargé, il sortira
aussi de sa Sub et de cela, DC ne veut pas, me semble-t-il
en fait, cet ActivateNext ne me plaît pas dans cette proc ; il vaudrait
mieux nommer le fichier à activater et à partir de là, si ce fichier
n'est pas présent, un nouvel On Error GoTo Sortie devrait faire
l'affaire...
jps
PS perso à Daniel J : bon, je t'autorise à dire que je suis (du verbe
"suivre") encore pas mal mais en aucun cas que je n'ai rien compis

"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:
OwOjx%
Bonjour
Il suffit d'intégrer Exit Sub à l'endroit que tu détermines.

Cordialement
Pascal

"DC" a écrit dans le message de news:
461612be$0$25920$
Bonjour, Excel 2000 sous XP

Voilà, j'aimerais pouvoir stoper une macro définitivement, si la
condition de chargement du classeur cible n'est pas remplies (
l'emplacement du stop est simulé dans la procédure ci-dessous )
L'explication du pourquoi ! est d'éviter un écrasement des données dans
le classeur source,( travaillant en copier-coller, )

Merci d'avance de me venir en aide
'---------------------------------------------------------------
Sub Ligne_Seule()
'
' Ligne_Seule Macro
' Macro enregistrée le 22/11/2005 par Daniel
'
On Error GoTo Sortie
ActiveCell.Range("A1:N1").Select
Selection.Copy
ActiveCell.Range("A1").Select

ActiveWindow.ScrollRow = ActiveCell.Row - 4

Windows("Facturation.xls").Activate





Exit Sub

'************************( emplacement de blocage de la macro
si le second classeur n'est pas chargé, avec si possible une fenêtre de
signalisation de l'évènement )
'******************************************************
Cells(ActiveCell.Row, 1).Select




ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(0, 7).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[4]*KF"
ActiveCell.Offset(0, 3).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-1]"
ActiveCell.Offset(0, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-4]*6.55957"
ActiveCell.Offset(0, -5).Range("A1").Select
ActiveCell = Application.InputBox(Prompt:="Entrer un nombre + OK...",
Title:="Quantité", Default:=1, Left:83, Top:=-66, Type:=1)

ActiveCell.Offset(1, -9).Range("A1").Select
Set Ligne = Application.InputBox(Prompt:="OUI = Flèche Bas + OK... NON
= Annuler...(Esc)", Title:=" Continuer OUI ou NON",
Default:¬tiveCell.Offset(0, 0).Range("A1").Address, Left:83,
Top:=-66, Type:=8)
Ligne.Select

ActiveWindow.ScrollRow = ActiveCell.Row - 12

Windows("Code-9.xls").Activate
Set Ligne = Application.InputBox(Prompt:="Sélection + OK... Pour
Arrêter = Annuler...(Esc)", Title:="Sélection H ou B avec les Flèches",
Default:¬tiveCell.Offset(1, 0).Range("A1").Address, Left:83,
Top:=-66, Type:=8)
Ligne.Select

Application.Run "'Code-9.xls'!Ligne_Seule"

Sortie:
End Sub
'---------------------------------------------------------------------
Cordialement ! au plaisir de vous lire ! DC