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

lancement d'une macro automatiquement si valeur dans A1=1

5 réponses
Avatar
Patcas
Bonjour

Je voudrais lancer automatiquement une macro quand A1= 1
Dans cette cellule j'ai une FORMULE qui me donne 1 ou 0.

Voila ce que j'ai ecrit mais ça coince...

Sub Copietableau()
ActiveSheet.Unprotect
If Range("A1").Value = "$1" Then
ActiveSheet.Range("N20:X32").Copy _
Destination:=ActiveSheet.Range("N65000").End(xlUp).Offset(1, 0)
ActiveWorkbook.Save
Range("N65000").End(xlUp).Offset(1, 0).Select
ActiveSheet.Protect
End If
End Sub

Merci pour votre aide.
Patrice C.

5 réponses

Avatar
LSteph
Bonjour,


voici un exemple à mettre dans le code de la feuille

''''''
Private Sub WorkSheet_Calculate()
If [a1].Value <> 1 Then Exit Sub
On error goto fin
application.enableeventsúlse
[n20:x32].Copy Destination:=[n65536].End(xlUp)(2)
fin:
application.enableevents=true
End Sub
''''''

Et pour le reste fais comme tu le sens:

activeworkbook.save 'attention c'est parfois redoutable
'de systématiser ce genre d'instruction particulièrement
sur un tel évennement.

Surtout si ta condition est que a1 soit égal à 1
ce qui arrivera à chaque recalcul tant qu'il est égal à 1



Pour la protection mieux vaudrait la mettre une fois pour toutes
dans le ThisWorkbook avec seulement l'interface utilisateur,
les macros ayant droit d'action sans avoir à dé ou re protéger chaque
fois..

Private Sub Workbook_open()
Dim sh as worksheet
For each sh in ThisWorkbook
sh.protect password:="toto", userinterfaceonly:=true
next
end sub

'Cdlt

'lSteph


Bonjour

Je voudrais lancer automatiquement une macro quand A1= 1
Dans cette cellule j'ai une FORMULE qui me donne 1 ou 0.

Voila ce que j'ai ecrit mais ça coince...

Sub Copietableau()
ActiveSheet.Unprotect
If Range("A1").Value = "$1" Then
ActiveSheet.Range("N20:X32").Copy _
Destination:¬tiveSheet.Range("N65000").End(xlUp).Offset(1, 0)
ActiveWorkbook.Save
Range("N65000").End(xlUp).Offset(1, 0).Select
ActiveSheet.Protect
End If
End Sub

Merci pour votre aide.
Patrice C.




Avatar
Patcas
Merci pour ta reponse mais
dans ta macro
voici un exemple à mettre dans le code de la feuille
Private Sub WorkSheet_Calculate()
If [a1].Value <> 1 Then Exit Sub
On error goto fin
application.enableeventsúlse
[n20:x32].Copy Destination:=[n65536].End(xlUp)(2)
fin:
application.enableevents=true
End Sub



ça ne fonctionne pas avec <>1
par contre, si je remplace par =1
ça fonctionne a chaque changement de valeur dans la cellule
donc ça ne me va pas non plus

As tu une explication car je ne suis pas un "fort en macro"

Merci d'avance

Patrice C.



"LSteph" a écrit dans le message de news:
%23xvP%
Bonjour,


voici un exemple à mettre dans le code de la feuille

''''''
Private Sub WorkSheet_Calculate()
If [a1].Value <> 1 Then Exit Sub
On error goto fin
application.enableeventsúlse
[n20:x32].Copy Destination:=[n65536].End(xlUp)(2)
fin:
application.enableevents=true
End Sub
''''''

Et pour le reste fais comme tu le sens:

activeworkbook.save 'attention c'est parfois redoutable
'de systématiser ce genre d'instruction particulièrement
sur un tel évennement.

Surtout si ta condition est que a1 soit égal à 1
ce qui arrivera à chaque recalcul tant qu'il est égal à 1



Pour la protection mieux vaudrait la mettre une fois pour toutes
dans le ThisWorkbook avec seulement l'interface utilisateur,
les macros ayant droit d'action sans avoir à dé ou re protéger chaque
fois..

Private Sub Workbook_open()
Dim sh as worksheet
For each sh in ThisWorkbook
sh.protect password:="toto", userinterfaceonly:=true
next
end sub

'Cdlt

'lSteph


Bonjour

Je voudrais lancer automatiquement une macro quand A1= 1
Dans cette cellule j'ai une FORMULE qui me donne 1 ou 0.

Voila ce que j'ai ecrit mais ça coince...

Sub Copietableau()
ActiveSheet.Unprotect
If Range("A1").Value = "$1" Then
ActiveSheet.Range("N20:X32").Copy _
Destination:¬tiveSheet.Range("N65000").End(xlUp).Offset(1, 0)
ActiveWorkbook.Save
Range("N65000").End(xlUp).Offset(1, 0).Select
ActiveSheet.Protect
End If
End Sub

Merci pour votre aide.
Patrice C.




Avatar
Patcas
J'ai resolu mon probleme
j'ai rajouté
Private Sub Worksheet_Activate()
valeur = Range("a1")
End Sub
et tout fonctionne
Merci
Bon WE
Patrice C.

"Patcas" a écrit dans le message de
news: wxwIh.67$
Merci pour ta reponse mais
dans ta macro
voici un exemple à mettre dans le code de la feuille
Private Sub WorkSheet_Calculate()
If [a1].Value <> 1 Then Exit Sub
On error goto fin
application.enableeventsúlse
[n20:x32].Copy Destination:=[n65536].End(xlUp)(2)
fin:
application.enableevents=true
End Sub



ça ne fonctionne pas avec <>1
par contre, si je remplace par =1
ça fonctionne a chaque changement de valeur dans la cellule
donc ça ne me va pas non plus

As tu une explication car je ne suis pas un "fort en macro"

Merci d'avance

Patrice C.



"LSteph" a écrit dans le message de news:
%23xvP%
Bonjour,


voici un exemple à mettre dans le code de la feuille

''''''
Private Sub WorkSheet_Calculate()
If [a1].Value <> 1 Then Exit Sub
On error goto fin
application.enableeventsúlse
[n20:x32].Copy Destination:=[n65536].End(xlUp)(2)
fin:
application.enableevents=true
End Sub
''''''

Et pour le reste fais comme tu le sens:

activeworkbook.save 'attention c'est parfois redoutable
'de systématiser ce genre d'instruction particulièrement
sur un tel évennement.

Surtout si ta condition est que a1 soit égal à 1
ce qui arrivera à chaque recalcul tant qu'il est égal à 1



Pour la protection mieux vaudrait la mettre une fois pour toutes
dans le ThisWorkbook avec seulement l'interface utilisateur,
les macros ayant droit d'action sans avoir à dé ou re protéger chaque
fois..

Private Sub Workbook_open()
Dim sh as worksheet
For each sh in ThisWorkbook
sh.protect password:="toto", userinterfaceonly:=true
next
end sub

'Cdlt

'lSteph


Bonjour

Je voudrais lancer automatiquement une macro quand A1= 1
Dans cette cellule j'ai une FORMULE qui me donne 1 ou 0.

Voila ce que j'ai ecrit mais ça coince...

Sub Copietableau()
ActiveSheet.Unprotect
If Range("A1").Value = "$1" Then
ActiveSheet.Range("N20:X32").Copy _
Destination:¬tiveSheet.Range("N65000").End(xlUp).Offset(1, 0)
ActiveWorkbook.Save
Range("N65000").End(xlUp).Offset(1, 0).Select
ActiveSheet.Protect
End If
End Sub

Merci pour votre aide.
Patrice C.








Avatar
LSteph
Ce que j'avais proposé fonctionne parfaitement avec ce que j'avais
compris de ta demande

tu voulais que si la valeur de A1 soit 1 la macro s'execute
sachant que a1 était l'objet d'un calcul.

ce que tu évoques n'a rien à voir , j'en déduis que j'avais mal compris!

même si sincèrement je ne comprends ni pourquoi ni comment,
si tout compte fait tu as résolu ton pb c'est l'essentiel!

@+

lSteph

J'ai resolu mon probleme
j'ai rajouté
Private Sub Worksheet_Activate()
valeur = Range("a1")
End Sub
et tout fonctionne
Merci
Bon WE
Patrice C.

"Patcas" a écrit dans le message de
news: wxwIh.67$
Merci pour ta reponse mais
dans ta macro
voici un exemple à mettre dans le code de la feuille
Private Sub WorkSheet_Calculate()
If [a1].Value <> 1 Then Exit Sub
On error goto fin
application.enableeventsúlse
[n20:x32].Copy Destination:=[n65536].End(xlUp)(2)
fin:
application.enableevents=true
End Sub


ça ne fonctionne pas avec <>1
par contre, si je remplace par =1
ça fonctionne a chaque changement de valeur dans la cellule
donc ça ne me va pas non plus

As tu une explication car je ne suis pas un "fort en macro"

Merci d'avance

Patrice C.



"LSteph" a écrit dans le message de news:
%23xvP%
Bonjour,


voici un exemple à mettre dans le code de la feuille

''''''
Private Sub WorkSheet_Calculate()
If [a1].Value <> 1 Then Exit Sub
On error goto fin
application.enableeventsúlse
[n20:x32].Copy Destination:=[n65536].End(xlUp)(2)
fin:
application.enableevents=true
End Sub
''''''

Et pour le reste fais comme tu le sens:

activeworkbook.save 'attention c'est parfois redoutable
'de systématiser ce genre d'instruction particulièrement
sur un tel évennement.

Surtout si ta condition est que a1 soit égal à 1
ce qui arrivera à chaque recalcul tant qu'il est égal à 1



Pour la protection mieux vaudrait la mettre une fois pour toutes
dans le ThisWorkbook avec seulement l'interface utilisateur,
les macros ayant droit d'action sans avoir à dé ou re protéger chaque
fois..

Private Sub Workbook_open()
Dim sh as worksheet
For each sh in ThisWorkbook
sh.protect password:="toto", userinterfaceonly:=true
next
end sub

'Cdlt

'lSteph


Bonjour

Je voudrais lancer automatiquement une macro quand A1= 1
Dans cette cellule j'ai une FORMULE qui me donne 1 ou 0.

Voila ce que j'ai ecrit mais ça coince...

Sub Copietableau()
ActiveSheet.Unprotect
If Range("A1").Value = "$1" Then
ActiveSheet.Range("N20:X32").Copy _
Destination:¬tiveSheet.Range("N65000").End(xlUp).Offset(1, 0)
ActiveWorkbook.Save
Range("N65000").End(xlUp).Offset(1, 0).Select
ActiveSheet.Protect
End If
End Sub

Merci pour votre aide.
Patrice C.











Avatar
Patcas
Ne t'inquiete pas c'est moi qui est "presque nul"
ça fonctionne comme tu me l'avais ecrit
Je pense que la protection devait gener
je les ai enlevées
Enfin ça marche c'est le principal
encore Merci
Patrice C.


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

Ce que j'avais proposé fonctionne parfaitement avec ce que j'avais compris
de ta demande

tu voulais que si la valeur de A1 soit 1 la macro s'execute
sachant que a1 était l'objet d'un calcul.

ce que tu évoques n'a rien à voir , j'en déduis que j'avais mal compris!

même si sincèrement je ne comprends ni pourquoi ni comment,
si tout compte fait tu as résolu ton pb c'est l'essentiel!

@+

lSteph

J'ai resolu mon probleme
j'ai rajouté
Private Sub Worksheet_Activate()
valeur = Range("a1")
End Sub
et tout fonctionne
Merci
Bon WE
Patrice C.

"Patcas" a écrit dans le message de
news: wxwIh.67$
Merci pour ta reponse mais
dans ta macro
voici un exemple à mettre dans le code de la feuille
Private Sub WorkSheet_Calculate()
If [a1].Value <> 1 Then Exit Sub
On error goto fin
application.enableeventsúlse
[n20:x32].Copy Destination:=[n65536].End(xlUp)(2)
fin:
application.enableevents=true
End Sub


ça ne fonctionne pas avec <>1
par contre, si je remplace par =1
ça fonctionne a chaque changement de valeur dans la cellule
donc ça ne me va pas non plus

As tu une explication car je ne suis pas un "fort en macro"

Merci d'avance

Patrice C.



"LSteph" a écrit dans le message de news:
%23xvP%
Bonjour,


voici un exemple à mettre dans le code de la feuille

''''''
Private Sub WorkSheet_Calculate()
If [a1].Value <> 1 Then Exit Sub
On error goto fin
application.enableeventsúlse
[n20:x32].Copy Destination:=[n65536].End(xlUp)(2)
fin:
application.enableevents=true
End Sub
''''''

Et pour le reste fais comme tu le sens:

activeworkbook.save 'attention c'est parfois redoutable
'de systématiser ce genre d'instruction particulièrement
sur un tel évennement.

Surtout si ta condition est que a1 soit égal à 1
ce qui arrivera à chaque recalcul tant qu'il est égal à 1



Pour la protection mieux vaudrait la mettre une fois pour toutes
dans le ThisWorkbook avec seulement l'interface utilisateur,
les macros ayant droit d'action sans avoir à dé ou re protéger chaque
fois..

Private Sub Workbook_open()
Dim sh as worksheet
For each sh in ThisWorkbook
sh.protect password:="toto", userinterfaceonly:=true
next
end sub

'Cdlt

'lSteph


Bonjour

Je voudrais lancer automatiquement une macro quand A1= 1
Dans cette cellule j'ai une FORMULE qui me donne 1 ou 0.

Voila ce que j'ai ecrit mais ça coince...

Sub Copietableau()
ActiveSheet.Unprotect
If Range("A1").Value = "$1" Then
ActiveSheet.Range("N20:X32").Copy _
Destination:¬tiveSheet.Range("N65000").End(xlUp).Offset(1, 0)
ActiveWorkbook.Save
Range("N65000").End(xlUp).Offset(1, 0).Select
ActiveSheet.Protect
End If
End Sub

Merci pour votre aide.
Patrice C.