Enregistrement Si Validation Effectuee

  • Initiateur de la discussion Initiateur de la discussion Zouzou93
  • 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 !

Zouzou93

XLDnaute Occasionnel
Bonsoir le FORUM,

J'ai une autre question et j'espère que qqu'un pourra une fois de plus me répondre.
J'ai établi deux macros :
Une que j'ai nommée "valider Offre" et une autre "Enregsitrer Offre".
Je souhaite que la macro "Enregistrer Offre" ne soit exécuter que si "Validation Offre" a été effectuée.
Est ce possible ?
Merci par avance
Zouzou
 
Re : Enregistrement Si Validation Effectuee

Bonsoir,

voici une solution qui vérifie l'état de la variable "valide" pour executer ou non la macro "Enregsitrer_Offre":

Code:
Dim valide As Boolean
Sub valider_Offre()
la macro ici
valide = True
End Sub
Sub Enregsitrer_Offre()
If valide Then
la macro ici
End If
End Sub

attention: "Dim valide As Boolean" doit être placé impérativement au niveau module c'est-à-dire au-dessus des macros.

Test et dis nous.
 
Re : Enregistrement Si Validation Effectuee

Merci Skoobi .....
J'ai fait le test et lorsque je clique sur Enregistrement je reste figé sur Enregistrement ... Rien ne se passe. Ma macro ne s'exécute pas même après après cliqué sur Valide.

Ci après copie des codes effectués ? Ou est le problème ?
Merci de ton aide

Zouzou


La macro valide est située sur la feuille 9 nommée "Offre"

Sub valide ()
Application.ScreenUpdating = False
Dim cel As Range
Dim valide As Boolean
For Each cel In Range("K35:K54")
If cel = "0" Then
cel.EntireRow.Hidden = True
ElseIf cel <> "0" Then
cel.EntireRow.Hidden = False
End If
Next
Application.ScreenUpdating = True
valide = True
End Sub

la macro enregistre () est située sur le module 1


Sub Enregistre()

If valide Then
Application.ScreenUpdating = False
Application.StatusBar = "Veuillez Patienter SVP"

[G1].Value = [G1].Value + 1
Range("E1:G1").Font.ColorIndex = 0
ActiveSheet.Copy
Cells.Copy
Cells.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("D3").Select
Application.StatusBar = False
For Each Obj In ActiveSheet.DrawingObjects
Obj.Delete
Next Obj
ThisWorkbook.Save
ChDir "Z:\documents\Outils\ARCHIVES COTATIONS\"
ActiveWorkbook.SaveAs Filename:="Z:\documents\Outils\ARCHIVES COTATIONS\" & [E1].Value & " " & Format([F1].Value, "yyyymm") & " " & [G1] & ".xls", FileFormat:=xlNormal
ActiveWorkbook.Close (False)



' Copie des données depuis (Cotateur Ceva -"Offre") à (Archives-"Feuil1")
' Macro enregistrée le 02/01/2008 par cdgsazr
'

' Ouvrir fichier Archives - DemasquerFeuil1
' Macro enregistrée le 02/01/2008 par cdgsazr

Workbooks.Open ("Z:\documents\Outils\ARCHIVES COTATIONS\Archives.xls")

Windows("COTATEUR CEVA.xls").Activate
Range("E1:G1").Select
Selection.Font.ColorIndex = 0
Range("I1").Select
Range("C8").Select
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("D17").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("C6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormat = "yyyy"
Windows("COTATEUR CEVA.xls").Activate
Range("D17").Select
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("D6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormat = "mm"
Windows("COTATEUR CEVA.xls").Activate
Range("G1").Select
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("E6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("D17").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("F6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("J14:M14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("G6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("D14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("I6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("H27:I27").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("J6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("H26:I26").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("K6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("D26").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("L6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("M24").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("N6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("A6").Select



' ARCHIVERREPERTOIRE Macro
' Macro enregistrée le 02/01/2008 par cdgsazr

ActiveSheet.Columns(1).Find("*", , , , , xlPrevious).EntireRow.Select
Selection.Copy
Sheets("ARCHIVES").Select
ActiveSheet.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Feuil1").Select
ActiveSheet.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select
Sheets("Feuil1").Select
Range("A6").Select


Application.DisplayAlerts = False


ThisWorkbook.Save
ActiveWorkbook.SaveAs Filename:= _
"Z:\documents\Outils\ARCHIVES COTATIONS\ARCHIVES.XLS", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Application.DisplayAlerts = True

ActiveWorkbook.Close (False)

msg = "Votre Cotation a bien été sauvegardée, Merci !"
Title = "Sauvegarde de la cotation actuelle"
Style = vbOKOnly + vbInformation
Reponse = MsgBox(msg, Style, Title)
Application.ScreenUpdating = True

End If

End Sub
 
Re : Enregistrement Si Validation Effectuee

Bonjour Zouzou, Skoobi, bonjour le forum,

À quoi ça sert que Skoobi se décarcasse...

attention: "Dim valide As Boolean" doit être placé impérativement au niveau module c'est-à-dire au-dessus des macros.

Édition :

Heu finalement tu as raison Zouzou ça ne marche pas. Attends je cherche une solution...

Édition 2 :

Comme les codes sont dans des modules différents il faut que la variable Valide soit valable dans tout le projet. Il faut la déclarer Publique. Au lieu de Dim Valide As Boolean en haut du module 1 (avant les macros). Tu écris Public Valide As Boolean. Ensuite, n'oublie pas d'affecter la valeur False (Valide = False) à la fin de la seconde macro.
 
Dernière édition:
Re : Enregistrement Si Validation Effectuee

Robert,

Je viens de tester ... et j'ai le message suivant "Erreur de compilation : Fonction ou variable attentue" sur Valide = True de la maco Valide.

Est ce que ce que j'ai fait est correct ? Merci pour ton aide.
Zouzou


Sur Feuil 9
Sub Valide()
Application.ScreenUpdating = False
Dim cel As Range
For Each cel In Range("K35:K54")
If cel = "0" Then
cel.EntireRow.Hidden = True
ElseIf cel <> "0" Then
cel.EntireRow.Hidden = False
End If
Next
Application.ScreenUpdating = True
Valide = True
End Sub

Sur Module 1

Public Valide As Boolean
Sub Enregistre()
If Valide Then
Application.ScreenUpdating = False
Application.StatusBar = "Veuillez Patienter SVP"

[G1].Value = [G1].Value + 1
Range("E1:G1").Font.ColorIndex = 0
ActiveSheet.Copy
Cells.Copy
Cells.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("D3").Select
Application.StatusBar = False
For Each Obj In ActiveSheet.DrawingObjects
Obj.Delete
Next Obj
ThisWorkbook.Save
ChDir "Z:\documents\Outils\ARCHIVES COTATIONS\"
ActiveWorkbook.SaveAs Filename:="Z:\documents\Outils\ARCHIVES COTATIONS\" & [E1].Value & " " & Format([F1].Value, "yyyymm") & " " & [G1] & ".xls", FileFormat:=xlNormal
ActiveWorkbook.Close (False)



' Copie des données depuis (Cotateur Ceva -"Offre") à (Archives-"Feuil1")
' Macro enregistrée le 02/01/2008 par cdgsazr
'

' Ouvrir fichier Archives - DemasquerFeuil1
' Macro enregistrée le 02/01/2008 par cdgsazr

Workbooks.Open ("Z:\documents\Outils\ARCHIVES COTATIONS\Archives.xls")

Windows("COTATEUR CEVA.xls").Activate
Range("E1:G1").Select
Selection.Font.ColorIndex = 0
Range("I1").Select
Range("C8").Select
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("D17").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("C6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormat = "yyyy"
Windows("COTATEUR CEVA.xls").Activate
Range("D17").Select
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("D6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormat = "mm"
Windows("COTATEUR CEVA.xls").Activate
Range("G1").Select
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("E6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("D17").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("F6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("J14:M14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("G6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("D14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("I6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("H27:I27").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("J6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("H26:I26").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("K6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("D26").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("L6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("COTATEUR CEVA.xls").Activate
Range("M24").Select
Application.CutCopyMode = False
Selection.Copy
Windows("ARCHIVES.XLS").Activate
Range("N6").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("A6").Select



' ARCHIVERREPERTOIRE Macro
' Macro enregistrée le 02/01/2008 par cdgsazr

ActiveSheet.Columns(1).Find("*", , , , , xlPrevious).EntireRow.Select
Selection.Copy
Sheets("ARCHIVES").Select
ActiveSheet.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Feuil1").Select
ActiveSheet.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select
Sheets("Feuil1").Select
Range("A6").Select


Application.DisplayAlerts = False


ThisWorkbook.Save
ActiveWorkbook.SaveAs Filename:= _
"Z:\documents\Outils\ARCHIVES COTATIONS\ARCHIVES.XLS", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Application.DisplayAlerts = True

ActiveWorkbook.Close (False)

msg = "Votre Cotation a bien été sauvegardée, Merci !"
Title = "Sauvegarde de la cotation actuelle"
Style = vbOKOnly + vbInformation
Reponse = MsgBox(msg, Style, Title)
Application.ScreenUpdating = True

End If
Valide = False
End Sub
 
Re : Enregistrement Si Validation Effectuee

Bonjour le fil, bonjour le forum,

Désolé Zouzou je vois pas. Tu as fait comme il faut. Mais j'ai testé chez moi mais juste avec deux bouts de code et ça fonctionnait.

Édition :

Je pense pas que ça change mais essaie If Valide = True Then plutôt que If Valide Then.
 
Dernière édition:
Re : Enregistrement Si Validation Effectuee

Bonjour le fil, bonjour le forum,

Zouzou je pense que le nom de la macro Valide() et le nom de la variable Valide peuvent provoquer une confusion. Essaie de renommer la variable Valide en Test (par exemple) dans les quatre lignes qui la concerne :
Code:
Public Test As Boolean
Test = True
if Test =  True Then
Test = False
dans leur endroit respectif
 
Re : Enregistrement Si Validation Effectuee

Bonjour Robert et merci.
Mais ca ne marche pas non plus ... J'ai remplacé valide par test et en cliquant sur enregistre le débogueur surligne TEST AS BOOLEAN et renvoi le message suivant : Erreur de compilation, Nom ambigu détecté :TEST.

Qu'est ce qui ne va pas ? On doit pouvoir avec du VBA permettre l'exécution d'une macro (Enregistre) qu'à la condition qu'une autre macro ait été exécutée avant (Valide ou test) ?
Merci
Zouzou
 
Re : Enregistrement Si Validation Effectuee

bonjour Zouzou

Salut Skoobi
Salut Robert

@Zouzou
dans la macro Valide de la feuille

Code:
.............
flag=true

dans le module

Code:
Public flag as Boolean
__________________________________
sub enregistre()
if not flag Then exit sub
flag=False
.........................
end sub
 
Re : Enregistrement Si Validation Effectuee

Merci Merci MerciPierreJean ça fonctionne à merveille .... Par contre j'aimerai pouvoir insérer un message du type "Vous devez valider votre cotation" lorsque l'utilisateur cliquera sur enregistre sans avoir valider au préalable. Car avec ce code l'enregistrement ne se fait pas mais je voudrais pouvoir avertir l'utilisateur. Est ce possible .... J'ai essayé mais mon message s'affiche dans tous les 2 cas.
Merci encore
Zouzou
 
Re : Enregistrement Si Validation Effectuee

Re zouzou93,
salut robert pierrejean 🙂,

As-tu mis le message comme ceci?

Code:
sub enregistre()
if not flag Then
[B][COLOR="Green"]    MsgBox "Vous devez valider votre cotation."[/COLOR][/B]
    exit sub
end if
flag=False
.........................
end sub
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 Fonction si
Réponses
7
Affichages
217
Réponses
40
Affichages
2 K
Réponses
12
Affichages
514
  • Question Question
XL 2019 VBA
Réponses
10
Affichages
1 K
Retour