OVH Cloud OVH Cloud

Rectifier une formule

23 réponses
Avatar
bouak
Bonjour,

Pouvez-vous m’aider à résoudre ce problème MERCI.

Après avoir cliquer en B1 un chiffre que j’ai inscris, ça marche super.

Mais lorsque j’importe un chiffre en B1 (correspondant à une formule par
lien dde), lorsqu’elle change ça ne marche pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [B1]: Exit Sub
End If
Cells([A65000].End(xlUp).Row + 1, 1) = [B1]
End If
End Sub

--
bouak

10 réponses

1 2 3
Avatar
LSteph
Bonjour Bouak,
c'est normal, si une formule en B1 il n'y a pas de changement, toujours la
même formule en B1.
Avant d'envisager une solution :
Lorsque tu utilises l'événement _Change avec une sub qui effectue
elle aussi un changement dans la feuille
il vaut mieux mettre un Application.enableeventsúlse au début et
Application.enableevents=true à la fin
'''
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
''''
moyennant cette prudence tu t'éviteras de boucler sur une modif.
En annexe:
Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0
Dès cet instant, c'est tout le temps a1 qui va récupèrer la valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!.

Donc,
tu devrais t'en tirer en utilisant en plus la même avec l'événement
_Calculate
''''*************************
'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
''''*************************

'lSteph
"bouak" a écrit dans le message de news:

Bonjour,

Pouvez-vous m'aider à résoudre ce problème MERCI.

Après avoir cliquer en B1 un chiffre que j'ai inscris, ça marche super.

Mais lorsque j'importe un chiffre en B1 (correspondant à une formule par
lien dde), lorsqu'elle change ça ne marche pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [B1]: Exit Sub
End If
Cells([A65000].End(xlUp).Row + 1, 1) = [B1]
End If
End Sub

--
bouak


Avatar
bouak
LSteph Bonjour,

Merci BIEN pour ta précieuse aide,

Ca fonctionne bien sauf que j’ai une petite fenêtre qui s’ouvre et à chaque
nouveau chiffre et je suis obligé de cliquer dessus ce qui n’est absolument
pas pratique car beaucoup de nouveaux chiffres.

As-tu une solution... (STP peux-tu vérifier ci-dessous si j'ai pas
merdé...), je te précise que je n’ai aucune connaissance de programmation,
j’ai donc exactement reporté comme ci-dessous dans feuil1.

Tu m’indiques

« Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0.Dès cet instant, c'est tout le temps a1 qui va récupèrer la
valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!. »

Pour moi ce qu’il me faut c’est simplement que chaque nouveau chiffre en B1
s’inscrive dans la colonne A, au dessous du précédent qui reste inscrit ex.

B1 = 150 A1 = 150
B1 = 180 A2 = 180
B1 = 140 A3 = 140 ainsi desuite

Encore Merci

Bouak
___________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
_______________________________________________

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
_______________________________________________________

Private Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]

End Sub
___________________________________________________________

Private Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

















Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb

End Sub


Public Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]
End Sub


Public Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

--
bouak



Bonjour Bouak,
c'est normal, si une formule en B1 il n'y a pas de changement, toujours la
même formule en B1.
Avant d'envisager une solution :
Lorsque tu utilises l'événement _Change avec une sub qui effectue
elle aussi un changement dans la feuille
il vaut mieux mettre un Application.enableeventsúlse au début et
Application.enableevents=true à la fin
'''
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
''''
moyennant cette prudence tu t'éviteras de boucler sur une modif.
En annexe:
Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0
Dès cet instant, c'est tout le temps a1 qui va récupèrer la valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!.

Donc,
tu devrais t'en tirer en utilisant en plus la même avec l'événement
_Calculate
''''*************************
'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
''''*************************

'lSteph
"bouak" a écrit dans le message de news:

Bonjour,

Pouvez-vous m'aider à résoudre ce problème MERCI.

Après avoir cliquer en B1 un chiffre que j'ai inscris, ça marche super.

Mais lorsque j'importe un chiffre en B1 (correspondant à une formule par
lien dde), lorsqu'elle change ça ne marche pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [B1]: Exit Sub
End If
Cells([A65000].End(xlUp).Row + 1, 1) = [B1]
End If
End Sub

--
bouak







Avatar
yoyoalternatif
Bonjour Bouak,

m'est avis qu'il faut enlever vraisemblablement ce message de test:

msgbox fixb

yoyo


LSteph Bonjour,

Merci BIEN pour ta précieuse aide,

Ca fonctionne bien sauf que j'ai une petite fenêtre qui s'ouvre et à chaque
nouveau chiffre et je suis obligé de cliquer dessus ce qui n'est absolu ment
pas pratique car beaucoup de nouveaux chiffres.

As-tu une solution... (STP peux-tu vérifier ci-dessous si j'ai pas
merdé...), je te précise que je n'ai aucune connaissance de programma tion,
j'ai donc exactement reporté comme ci-dessous dans feuil1.

Tu m'indiques

« Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre d e la
colonne devient 0.Dès cet instant, c'est tout le temps a1 qui va récu pèrer la
valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!. »

Pour moi ce qu'il me faut c'est simplement que chaque nouveau chiffre en B1
s'inscrive dans la colonne A, au dessous du précédent qui reste inscr it ex.

B1 = 150 A1 = 150
B1 = 180 A2 = 180
B1 = 140 A3 = 140 ainsi desuite

Encore Merci

Bouak
___________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
_______________________________________________

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
_______________________________________________________

Private Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]

End Sub
___________________________________________________________

Private Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

















Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb

End Sub


Public Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]
End Sub


Public Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

--
bouak



Bonjour Bouak,
c'est normal, si une formule en B1 il n'y a pas de changement, toujours la
même formule en B1.
Avant d'envisager une solution :
Lorsque tu utilises l'événement _Change avec une sub qui effectue
elle aussi un changement dans la feuille
il vaut mieux mettre un Application.enableeventsúlse au début et
Application.enableevents=true à la fin
'''
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
''''
moyennant cette prudence tu t'éviteras de boucler sur une modif.
En annexe:
Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0
Dès cet instant, c'est tout le temps a1 qui va récupèrer la valeu r de b1
Mais c'est toi qui vois, j'ai pas bien compris!.

Donc,
tu devrais t'en tirer en utilisant en plus la même avec l'événeme nt
_Calculate
''''*************************
'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
''''*************************

'lSteph
"bouak" a écrit dans le message de news:

Bonjour,

Pouvez-vous m'aider à résoudre ce problème MERCI.

Après avoir cliquer en B1 un chiffre que j'ai inscris, ça marche super.

Mais lorsque j'importe un chiffre en B1 (correspondant à une formul e par
lien dde), lorsqu'elle change ça ne marche pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [B1]: Exit Sub
End If
Cells([A65000].End(xlUp).Row + 1, 1) = [B1]
End If
End Sub

--
bouak









Avatar
bouak
Yoyoalternatif,

Merci c'était exactement ça

Trés sympa
--
bouak



Bonjour Bouak,

m'est avis qu'il faut enlever vraisemblablement ce message de test:

msgbox fixb

yoyo


LSteph Bonjour,

Merci BIEN pour ta précieuse aide,

Ca fonctionne bien sauf que j'ai une petite fenêtre qui s'ouvre et à chaque
nouveau chiffre et je suis obligé de cliquer dessus ce qui n'est absolument
pas pratique car beaucoup de nouveaux chiffres.

As-tu une solution... (STP peux-tu vérifier ci-dessous si j'ai pas
merdé...), je te précise que je n'ai aucune connaissance de programmation,
j'ai donc exactement reporté comme ci-dessous dans feuil1.

Tu m'indiques

« Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0.Dès cet instant, c'est tout le temps a1 qui va récupèrer la
valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!. »

Pour moi ce qu'il me faut c'est simplement que chaque nouveau chiffre en B1
s'inscrive dans la colonne A, au dessous du précédent qui reste inscrit ex.

B1 = 150 A1 = 150
B1 = 180 A2 = 180
B1 = 140 A3 = 140 ainsi desuite

Encore Merci

Bouak
___________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
_______________________________________________

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
_______________________________________________________

Private Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]

End Sub
___________________________________________________________

Private Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

















Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb

End Sub


Public Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]
End Sub


Public Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

--
bouak



Bonjour Bouak,
c'est normal, si une formule en B1 il n'y a pas de changement, toujours la
même formule en B1.
Avant d'envisager une solution :
Lorsque tu utilises l'événement _Change avec une sub qui effectue
elle aussi un changement dans la feuille
il vaut mieux mettre un Application.enableeventsúlse au début et
Application.enableevents=true à la fin
'''
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
''''
moyennant cette prudence tu t'éviteras de boucler sur une modif.
En annexe:
Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0
Dès cet instant, c'est tout le temps a1 qui va récupèrer la valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!.

Donc,
tu devrais t'en tirer en utilisant en plus la même avec l'événement
_Calculate
''''*************************
'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
''''*************************

'lSteph
"bouak" a écrit dans le message de news:

Bonjour,

Pouvez-vous m'aider à résoudre ce problème MERCI.

Après avoir cliquer en B1 un chiffre que j'ai inscris, ça marche super.

Mais lorsque j'importe un chiffre en B1 (correspondant à une formule par
lien dde), lorsqu'elle change ça ne marche pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [B1]: Exit Sub
End If
Cells([A65000].End(xlUp).Row + 1, 1) = [B1]
End If
End Sub

--
bouak













Avatar
LSteph
Bonsoir,
oui enlever le msgbox et donc ceci suffit (pas besoins de+ mais mettre dans
les bons modules)

'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
End Sub
''''*************************


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

LSteph Bonjour,

Merci BIEN pour ta précieuse aide,

Ca fonctionne bien sauf que j'ai une petite fenêtre qui s'ouvre et à
chaque
nouveau chiffre et je suis obligé de cliquer dessus ce qui n'est
absolument
pas pratique car beaucoup de nouveaux chiffres.

As-tu une solution... (STP peux-tu vérifier ci-dessous si j'ai pas
merdé...), je te précise que je n'ai aucune connaissance de programmation,
j'ai donc exactement reporté comme ci-dessous dans feuil1.

Tu m'indiques

« Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0.Dès cet instant, c'est tout le temps a1 qui va récupèrer
la
valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!. »

Pour moi ce qu'il me faut c'est simplement que chaque nouveau chiffre en
B1
s'inscrive dans la colonne A, au dessous du précédent qui reste inscrit
ex.

B1 = 150 A1 = 150
B1 = 180 A2 = 180
B1 = 140 A3 = 140 ainsi desuite

Encore Merci

Bouak
___________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
_______________________________________________

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
_______________________________________________________

Private Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]

End Sub
___________________________________________________________

Private Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

















Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb

End Sub


Public Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]
End Sub


Public Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

--
bouak



Bonjour Bouak,
c'est normal, si une formule en B1 il n'y a pas de changement, toujours
la
même formule en B1.
Avant d'envisager une solution :
Lorsque tu utilises l'événement _Change avec une sub qui effectue
elle aussi un changement dans la feuille
il vaut mieux mettre un Application.enableeventsúlse au début et
Application.enableevents=true à la fin
'''
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
''''
moyennant cette prudence tu t'éviteras de boucler sur une modif.
En annexe:
Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0
Dès cet instant, c'est tout le temps a1 qui va récupèrer la valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!.

Donc,
tu devrais t'en tirer en utilisant en plus la même avec l'événement
_Calculate
''''*************************
'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
''''*************************

'lSteph
"bouak" a écrit dans le message de
news:

Bonjour,

Pouvez-vous m'aider à résoudre ce problème MERCI.

Après avoir cliquer en B1 un chiffre que j'ai inscris, ça marche super.

Mais lorsque j'importe un chiffre en B1 (correspondant à une formule
par
lien dde), lorsqu'elle change ça ne marche pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [B1]: Exit Sub
End If
Cells([A65000].End(xlUp).Row + 1, 1) = [B1]
End If
End Sub

--
bouak









Avatar
bouak
Bonsoir LSteph,

Encore merci pour ta précision ça marche super.

Par contre le nombre que j'importe en $B$1, ce répète plusieurs fois alors
qu'il ne change pas sur la feulle d'origine.

Désolé de venir encore t'importuner.

Bonne soirée
bouak



Bonsoir,
oui enlever le msgbox et donc ceci suffit (pas besoins de+ mais mettre dans
les bons modules)

'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
End Sub
''''*************************


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

LSteph Bonjour,

Merci BIEN pour ta précieuse aide,

Ca fonctionne bien sauf que j'ai une petite fenêtre qui s'ouvre et à
chaque
nouveau chiffre et je suis obligé de cliquer dessus ce qui n'est
absolument
pas pratique car beaucoup de nouveaux chiffres.

As-tu une solution... (STP peux-tu vérifier ci-dessous si j'ai pas
merdé...), je te précise que je n'ai aucune connaissance de programmation,
j'ai donc exactement reporté comme ci-dessous dans feuil1.

Tu m'indiques

« Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0.Dès cet instant, c'est tout le temps a1 qui va récupèrer
la
valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!. »

Pour moi ce qu'il me faut c'est simplement que chaque nouveau chiffre en
B1
s'inscrive dans la colonne A, au dessous du précédent qui reste inscrit
ex.

B1 = 150 A1 = 150
B1 = 180 A2 = 180
B1 = 140 A3 = 140 ainsi desuite

Encore Merci

Bouak
___________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
_______________________________________________

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
_______________________________________________________

Private Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]

End Sub
___________________________________________________________

Private Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

















Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb

End Sub


Public Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]
End Sub


Public Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

--
bouak



Bonjour Bouak,
c'est normal, si une formule en B1 il n'y a pas de changement, toujours
la
même formule en B1.
Avant d'envisager une solution :
Lorsque tu utilises l'événement _Change avec une sub qui effectue
elle aussi un changement dans la feuille
il vaut mieux mettre un Application.enableeventsúlse au début et
Application.enableevents=true à la fin
'''
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
''''
moyennant cette prudence tu t'éviteras de boucler sur une modif.
En annexe:
Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0
Dès cet instant, c'est tout le temps a1 qui va récupèrer la valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!.

Donc,
tu devrais t'en tirer en utilisant en plus la même avec l'événement
_Calculate
''''*************************
'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
''''*************************

'lSteph
"bouak" a écrit dans le message de
news:

Bonjour,

Pouvez-vous m'aider à résoudre ce problème MERCI.

Après avoir cliquer en B1 un chiffre que j'ai inscris, ça marche super.

Mais lorsque j'importe un chiffre en B1 (correspondant à une formule
par
lien dde), lorsqu'elle change ça ne marche pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [B1]: Exit Sub
End If
Cells([A65000].End(xlUp).Row + 1, 1) = [B1]
End If
End Sub

--
bouak














Avatar
LSteph
Bonjour Bouak,
????
Par contre le nombre que j'importe en $B$1, se répète plusieurs fois
....

Désolé de venir encore t'importuner.
;o) pas dutout

.....

En mettant comme précisé , uniquement dans le thisworkbook
la définition de la variable par rapport à Feuil1!b1 et la procèdure _open.,
puis dans le code de "Feuil1", exclusivement les proc _calculate et
_activate,
je n'ai pas ce bégaiement.

Explication du code:

'''***dans le thisworkbook
Public fiXb ' variable publique(accessible aux autres modules)

Private Sub Workbook_Open()
'à l'ouverture du classeur
fiXb = Feuil1.[b1]
'la variable prend valeur de b1 de Feuil1
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
'qd on active feuil1, au cas où aussi
fiXb = [b1]
'la variable prend valeur de b1 de Feuil1
End Sub

Private Sub Worksheet_Calculate()
'qd un calcul intervient dans feuil1
If fiXb = [b1].Value Then Exit Sub
'si la variable reste égale à b1 , on sort de la macro
Application.EnableEvents = False
'désactivation des événements (pour opèrer sans les relancer)
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
'si la 1ère cell rencontrée en colonneA en partant du bas est égale à 0
[A1] = [b1]
'a1 prend valeur de b1
Else
'sinon la 1ère cell rencontrée en colonneA en partant du bas
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
'prend valeur de b1
End If
fiXb = [b1]
'on met dans la variable la nouvelle valeur de b1
Application.EnableEvents = True
'réactivation des événements.
End Sub
''''*************************
'lSteph
"bouak" a écrit dans le message de news:

Bonsoir LSteph,

Encore merci pour ta précision ça marche super.

Par contre le nombre que j'importe en $B$1, ce répète plusieurs fois alors
qu'il ne change pas sur la feulle d'origine.

Désolé de venir encore t'importuner.

Bonne soirée
bouak



Bonsoir,
oui enlever le msgbox et donc ceci suffit (pas besoins de+ mais mettre
dans
les bons modules)

'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
End Sub
''''*************************


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

LSteph Bonjour,

Merci BIEN pour ta précieuse aide,

Ca fonctionne bien sauf que j'ai une petite fenêtre qui s'ouvre et à
chaque
nouveau chiffre et je suis obligé de cliquer dessus ce qui n'est
absolument
pas pratique car beaucoup de nouveaux chiffres.

As-tu une solution... (STP peux-tu vérifier ci-dessous si j'ai pas
merdé...), je te précise que je n'ai aucune connaissance de
programmation,
j'ai donc exactement reporté comme ci-dessous dans feuil1.

Tu m'indiques

« Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de
la
colonne devient 0.Dès cet instant, c'est tout le temps a1 qui va
récupèrer
la
valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!. »

Pour moi ce qu'il me faut c'est simplement que chaque nouveau chiffre
en
B1
s'inscrive dans la colonne A, au dessous du précédent qui reste inscrit
ex.

B1 = 150 A1 = 150
B1 = 180 A2 = 180
B1 = 140 A3 = 140 ainsi desuite

Encore Merci

Bouak
___________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
_______________________________________________

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
_______________________________________________________

Private Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]

End Sub
___________________________________________________________

Private Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

















Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb

End Sub


Public Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]
End Sub


Public Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

--
bouak



Bonjour Bouak,
c'est normal, si une formule en B1 il n'y a pas de changement,
toujours
la
même formule en B1.
Avant d'envisager une solution :
Lorsque tu utilises l'événement _Change avec une sub qui effectue
elle aussi un changement dans la feuille
il vaut mieux mettre un Application.enableeventsúlse au début et
Application.enableevents=true à la fin
'''
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
''''
moyennant cette prudence tu t'éviteras de boucler sur une modif.
En annexe:
Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0
Dès cet instant, c'est tout le temps a1 qui va récupèrer la valeur de
b1
Mais c'est toi qui vois, j'ai pas bien compris!.

Donc,
tu devrais t'en tirer en utilisant en plus la même avec l'événement
_Calculate
''''*************************
'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
''''*************************

'lSteph
"bouak" a écrit dans le message de
news:

Bonjour,

Pouvez-vous m'aider à résoudre ce problème MERCI.

Après avoir cliquer en B1 un chiffre que j'ai inscris, ça marche
super.

Mais lorsque j'importe un chiffre en B1 (correspondant à une formule
par
lien dde), lorsqu'elle change ça ne marche pas.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [B1]: Exit Sub
End If
Cells([A65000].End(xlUp).Row + 1, 1) = [B1]
End If
End Sub

--
bouak
















Avatar
bouak
Bonjour LSteph,

J'ai bien vérifier tout et ok.

Pour tester, dans la cellule d'origine d'importation j'ai mis un nombre fixe
et il y a toujours bégaiement.

N'est il pas possible que ce soit donc à l'origine de la plage du flux
importé qui même si le nombre reste le même il est renouvellé toutes les X
secondes ???

Encore merci.

J'ai un autre prob, peux-tu encore m'aider...

En Feuille data colonne A s’inscrivent automatiquement des nombres
différents dans chaque cellule à partir de A55 (A55 = 150, A56 = 118, A57
5, le prochain s’inscrit en A58, etc jusqu’à A65000.

Au départ, par comparaison au nombre inscrit en A55, inscrire en A50 le
prochain nombre extrême dès qu’il est <>6 et dès qu’il diminue de 6
(positivement ou négativement).
Ainsi de suite en comparant le nouveau nombre extrême à chaque dernier
nombre extrême en A50.

Les variables sont portés dans :

Feuille data colonne A Cellule 50 = nombre extrême et de comparaison
Feuille data colonne A Cellule 51 = prochain nombre extrême dès <> 6
Feuille data colonne A Cellule 52 = et dès > 6
Feuille data colonne A Cellule de 55 inscription automatique des nombres
Feuille data colonne A Cellule à 65000 inscription automatique des nombres

Ou tout autre que tu juges utile.


Ca s'appelle abuser...

Merci
--
bouak



Bonjour Bouak,
????
Par contre le nombre que j'importe en $B$1, se répète plusieurs fois
.....

Désolé de venir encore t'importuner.
;o) pas dutout

......

En mettant comme précisé , uniquement dans le thisworkbook
la définition de la variable par rapport à Feuil1!b1 et la procèdure _open.,
puis dans le code de "Feuil1", exclusivement les proc _calculate et
_activate,
je n'ai pas ce bégaiement.

Explication du code:

'''***dans le thisworkbook
Public fiXb ' variable publique(accessible aux autres modules)

Private Sub Workbook_Open()
'à l'ouverture du classeur
fiXb = Feuil1.[b1]
'la variable prend valeur de b1 de Feuil1
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
'qd on active feuil1, au cas où aussi
fiXb = [b1]
'la variable prend valeur de b1 de Feuil1
End Sub

Private Sub Worksheet_Calculate()
'qd un calcul intervient dans feuil1
If fiXb = [b1].Value Then Exit Sub
'si la variable reste égale à b1 , on sort de la macro
Application.EnableEvents = False
'désactivation des événements (pour opèrer sans les relancer)
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
'si la 1ère cell rencontrée en colonneA en partant du bas est égale à 0
[A1] = [b1]
'a1 prend valeur de b1
Else
'sinon la 1ère cell rencontrée en colonneA en partant du bas
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
'prend valeur de b1
End If
fiXb = [b1]
'on met dans la variable la nouvelle valeur de b1
Application.EnableEvents = True
'réactivation des événements.
End Sub
''''*************************
'lSteph
"bouak" a écrit dans le message de news:

Bonsoir LSteph,

Encore merci pour ta précision ça marche super.

Par contre le nombre que j'importe en $B$1, ce répète plusieurs fois alors
qu'il ne change pas sur la feulle d'origine.

Désolé de venir encore t'importuner.

Bonne soirée
bouak



Bonsoir,
oui enlever le msgbox et donc ceci suffit (pas besoins de+ mais mettre
dans
les bons modules)

'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
End Sub
''''*************************


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

LSteph Bonjour,

Merci BIEN pour ta précieuse aide,

Ca fonctionne bien sauf que j'ai une petite fenêtre qui s'ouvre et à
chaque
nouveau chiffre et je suis obligé de cliquer dessus ce qui n'est
absolument
pas pratique car beaucoup de nouveaux chiffres.

As-tu une solution... (STP peux-tu vérifier ci-dessous si j'ai pas
merdé...), je te précise que je n'ai aucune connaissance de
programmation,
j'ai donc exactement reporté comme ci-dessous dans feuil1.

Tu m'indiques

« Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de
la
colonne devient 0.Dès cet instant, c'est tout le temps a1 qui va
récupèrer
la
valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!. »

Pour moi ce qu'il me faut c'est simplement que chaque nouveau chiffre
en
B1
s'inscrive dans la colonne A, au dessous du précédent qui reste inscrit
ex.

B1 = 150 A1 = 150
B1 = 180 A2 = 180
B1 = 140 A3 = 140 ainsi desuite

Encore Merci

Bouak
___________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
_______________________________________________

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
_______________________________________________________

Private Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]

End Sub
___________________________________________________________

Private Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

















Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb

End Sub


Public Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]
End Sub


Public Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

--
bouak



Bonjour Bouak,
c'est normal, si une formule en B1 il n'y a pas de changement,
toujours
la
même formule en B1.
Avant d'envisager une solution :
Lorsque tu utilises l'événement _Change avec une sub qui effectue
elle aussi un changement dans la feuille
il vaut mieux mettre un Application.enableeventsúlse au début et
Application.enableevents=true à la fin
'''
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
''''
moyennant cette prudence tu t'éviteras de boucler sur une modif.
En annexe:
Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de la
colonne devient 0
Dès cet instant, c'est tout le temps a1 qui va récupèrer la valeur de
b1
Mais c'est toi qui vois, j'ai pas bien compris!.

Donc,
tu devrais t'en tirer en utilisant en plus la même avec l'événement
_Calculate
''''*************************
'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
''''*************************

'lSteph










Avatar
LSteph
Bonsoir Bouak,
J'ai bien vérifier tout et ok.


Aie Aie Ben non! d'après ce que je vois dans l'exemple de ton nouveau fil
pas vraiment
une Feuil3 est nommée feuil1
Dans le thisworkbook tu n'as rien mis ....
le modulede la feuil1que tu as nommée "gbp usd" contient tout le code dont
une
"private sub thisworkbook" qui ne veut rien dire à la place (je n'ai pas
écrit cela)
...bon....pas grave!
.......

quand tu es dans excel avec ton classeur ouvert fais alt+f11 pour ouvrir
VBE
sur ta gauche une fenêtre devrait afficher l'explorateur de projet sinon
fais Ctrl+r
Tu devrais y trouver le nom de ton classeur en tant que projet,
dedans
doubleclic sur thisworkbook son module s'ouvre à droite y coller ceci

'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***

'Ensuite dans le code de Feuil1 celle qui concerne b1 tu garde juste ceci
et rien d'autre:

'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
End Sub
''''*************************

'profites en également renommer ta feuille3 feuil3 au lieu de feuil1, ce
sera plus clair
'cela ne bégaiera plus dès que tu aura reouvert ton classeur ou
déselectionné et sélectionné Feuil1
'...à suivre

'Salutations.

lSteph
'pour le reste je crois que Daniel t'a répondu sur l'autre fil!






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

Bonjour LSteph,

J'ai bien vérifier tout et ok.

Pour tester, dans la cellule d'origine d'importation j'ai mis un nombre
fixe
et il y a toujours bégaiement.

N'est il pas possible que ce soit donc à l'origine de la plage du flux
importé qui même si le nombre reste le même il est renouvellé toutes les X
secondes ???

Encore merci.

J'ai un autre prob, peux-tu encore m'aider...

En Feuille data colonne A s'inscrivent automatiquement des nombres
différents dans chaque cellule à partir de A55 (A55 = 150, A56 = 118, A57
5, le prochain s'inscrit en A58, etc jusqu'à A65000.

Au départ, par comparaison au nombre inscrit en A55, inscrire en A50 le
prochain nombre extrême dès qu'il est <>6 et dès qu'il diminue de 6
(positivement ou négativement).
Ainsi de suite en comparant le nouveau nombre extrême à chaque dernier
nombre extrême en A50.

Les variables sont portés dans :

Feuille data colonne A Cellule 50 = nombre extrême et de comparaison
Feuille data colonne A Cellule 51 = prochain nombre extrême dès <> 6
Feuille data colonne A Cellule 52 = et dès > 6
Feuille data colonne A Cellule de 55 inscription automatique des
nombres
Feuille data colonne A Cellule à 65000 inscription automatique des nombres

Ou tout autre que tu juges utile.


Ca s'appelle abuser...

Merci
--
bouak



Bonjour Bouak,
????
Par contre le nombre que j'importe en $B$1, se répète plusieurs fois
.....

Désolé de venir encore t'importuner.
;o) pas dutout

......

En mettant comme précisé , uniquement dans le thisworkbook
la définition de la variable par rapport à Feuil1!b1 et la procèdure
_open.,
puis dans le code de "Feuil1", exclusivement les proc _calculate et
_activate,
je n'ai pas ce bégaiement.

Explication du code:

'''***dans le thisworkbook
Public fiXb ' variable publique(accessible aux autres modules)

Private Sub Workbook_Open()
'à l'ouverture du classeur
fiXb = Feuil1.[b1]
'la variable prend valeur de b1 de Feuil1
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
'qd on active feuil1, au cas où aussi
fiXb = [b1]
'la variable prend valeur de b1 de Feuil1
End Sub

Private Sub Worksheet_Calculate()
'qd un calcul intervient dans feuil1
If fiXb = [b1].Value Then Exit Sub
'si la variable reste égale à b1 , on sort de la macro
Application.EnableEvents = False
'désactivation des événements (pour opèrer sans les relancer)
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
'si la 1ère cell rencontrée en colonneA en partant du bas est égale à 0
[A1] = [b1]
'a1 prend valeur de b1
Else
'sinon la 1ère cell rencontrée en colonneA en partant du bas
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
'prend valeur de b1
End If
fiXb = [b1]
'on met dans la variable la nouvelle valeur de b1
Application.EnableEvents = True
'réactivation des événements.
End Sub
''''*************************
'lSteph
"bouak" a écrit dans le message de
news:

Bonsoir LSteph,

Encore merci pour ta précision ça marche super.

Par contre le nombre que j'importe en $B$1, ce répète plusieurs fois
alors
qu'il ne change pas sur la feulle d'origine.

Désolé de venir encore t'importuner.

Bonne soirée
bouak



Bonsoir,
oui enlever le msgbox et donc ceci suffit (pas besoins de+ mais mettre
dans
les bons modules)

'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
End Sub
''''*************************


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

LSteph Bonjour,

Merci BIEN pour ta précieuse aide,

Ca fonctionne bien sauf que j'ai une petite fenêtre qui s'ouvre et à
chaque
nouveau chiffre et je suis obligé de cliquer dessus ce qui n'est
absolument
pas pratique car beaucoup de nouveaux chiffres.

As-tu une solution... (STP peux-tu vérifier ci-dessous si j'ai pas
merdé...), je te précise que je n'ai aucune connaissance de
programmation,
j'ai donc exactement reporté comme ci-dessous dans feuil1.

Tu m'indiques

« Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre
de
la
colonne devient 0.Dès cet instant, c'est tout le temps a1 qui va
récupèrer
la
valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!. »

Pour moi ce qu'il me faut c'est simplement que chaque nouveau
chiffre
en
B1
s'inscrive dans la colonne A, au dessous du précédent qui reste
inscrit
ex.

B1 = 150 A1 = 150
B1 = 180 A2 = 180
B1 = 140 A3 = 140 ainsi desuite

Encore Merci

Bouak
___________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
_______________________________________________

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
_______________________________________________________

Private Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]

End Sub
___________________________________________________________

Private Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

















Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb

End Sub


Public Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]
End Sub


Public Sub feuil1()
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

--
bouak



Bonjour Bouak,
c'est normal, si une formule en B1 il n'y a pas de changement,
toujours
la
même formule en B1.
Avant d'envisager une solution :
Lorsque tu utilises l'événement _Change avec une sub qui effectue
elle aussi un changement dans la feuille
il vaut mieux mettre un Application.enableeventsúlse au début et
Application.enableevents=true à la fin
'''
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
''''
moyennant cette prudence tu t'éviteras de boucler sur une modif.
En annexe:
Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre de
la
colonne devient 0
Dès cet instant, c'est tout le temps a1 qui va récupèrer la valeur
de
b1
Mais c'est toi qui vois, j'ai pas bien compris!.

Donc,
tu devrais t'en tirer en utilisant en plus la même avec l'événement
_Calculate
''''*************************
'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
''''*************************

'lSteph












Avatar
bouak
Bonjour,

Ca y est j'ai compris le cheminement suite à tes précisions pas à pas...

J'ai rectifié, en espérant ... comme tu me l'a indiqué...
Le nouveau classeur rectifié est sur http://cjoint.com/?bhqqFNoaas

Ne faut il rien ajouter à ThisWorkbook tenant compte du code Feuil3 que j'ai
renommée gbp

Je t'avais bien indiqué que j'étais nul... c'est ma PREMIERE fois en VBA ...

Peux-tu m'aider pour ma demande qui est formulée à la feuille gbp.

Merci et bon Week end


Merci et Bon Week end
--
bouak


Bonsoir Bouak,
J'ai bien vérifier tout et ok.


Aie Aie Ben non! d'après ce que je vois dans l'exemple de ton nouveau fil
pas vraiment
une Feuil3 est nommée feuil1
Dans le thisworkbook tu n'as rien mis ....
le modulede la feuil1que tu as nommée "gbp usd" contient tout le code dont
une
"private sub thisworkbook" qui ne veut rien dire à la place (je n'ai pas
écrit cela)
....bon....pas grave!
........

quand tu es dans excel avec ton classeur ouvert fais alt+f11 pour ouvrir
VBE
sur ta gauche une fenêtre devrait afficher l'explorateur de projet sinon
fais Ctrl+r
Tu devrais y trouver le nom de ton classeur en tant que projet,
dedans
doubleclic sur thisworkbook son module s'ouvre à droite y coller ceci

'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***

'Ensuite dans le code de Feuil1 celle qui concerne b1 tu garde juste ceci
et rien d'autre:

'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
End Sub
''''*************************

'profites en également renommer ta feuille3 feuil3 au lieu de feuil1, ce
sera plus clair
'cela ne bégaiera plus dès que tu aura reouvert ton classeur ou
déselectionné et sélectionné Feuil1
'...à suivre

'Salutations.

lSteph
'pour le reste je crois que Daniel t'a répondu sur l'autre fil!






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

Bonjour LSteph,

J'ai bien vérifier tout et ok.

Pour tester, dans la cellule d'origine d'importation j'ai mis un nombre
fixe
et il y a toujours bégaiement.

N'est il pas possible que ce soit donc à l'origine de la plage du flux
importé qui même si le nombre reste le même il est renouvellé toutes les X
secondes ???

Encore merci.

J'ai un autre prob, peux-tu encore m'aider...

En Feuille data colonne A s'inscrivent automatiquement des nombres
différents dans chaque cellule à partir de A55 (A55 = 150, A56 = 118, A57
5, le prochain s'inscrit en A58, etc jusqu'à A65000.

Au départ, par comparaison au nombre inscrit en A55, inscrire en A50 le
prochain nombre extrême dès qu'il est <>6 et dès qu'il diminue de 6
(positivement ou négativement).
Ainsi de suite en comparant le nouveau nombre extrême à chaque dernier
nombre extrême en A50.

Les variables sont portés dans :

Feuille data colonne A Cellule 50 = nombre extrême et de comparaison
Feuille data colonne A Cellule 51 = prochain nombre extrême dès <> 6
Feuille data colonne A Cellule 52 = et dès > 6
Feuille data colonne A Cellule de 55 inscription automatique des
nombres
Feuille data colonne A Cellule à 65000 inscription automatique des nombres

Ou tout autre que tu juges utile.


Ca s'appelle abuser...

Merci
--
bouak



Bonjour Bouak,
????
Par contre le nombre que j'importe en $B$1, se répète plusieurs fois
.....

Désolé de venir encore t'importuner.
;o) pas dutout

......

En mettant comme précisé , uniquement dans le thisworkbook
la définition de la variable par rapport à Feuil1!b1 et la procèdure
_open.,
puis dans le code de "Feuil1", exclusivement les proc _calculate et
_activate,
je n'ai pas ce bégaiement.

Explication du code:

'''***dans le thisworkbook
Public fiXb ' variable publique(accessible aux autres modules)

Private Sub Workbook_Open()
'à l'ouverture du classeur
fiXb = Feuil1.[b1]
'la variable prend valeur de b1 de Feuil1
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
'qd on active feuil1, au cas où aussi
fiXb = [b1]
'la variable prend valeur de b1 de Feuil1
End Sub

Private Sub Worksheet_Calculate()
'qd un calcul intervient dans feuil1
If fiXb = [b1].Value Then Exit Sub
'si la variable reste égale à b1 , on sort de la macro
Application.EnableEvents = False
'désactivation des événements (pour opèrer sans les relancer)
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
'si la 1ère cell rencontrée en colonneA en partant du bas est égale à 0
[A1] = [b1]
'a1 prend valeur de b1
Else
'sinon la 1ère cell rencontrée en colonneA en partant du bas
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
'prend valeur de b1
End If
fiXb = [b1]
'on met dans la variable la nouvelle valeur de b1
Application.EnableEvents = True
'réactivation des événements.
End Sub
''''*************************
'lSteph
"bouak" a écrit dans le message de
news:

Bonsoir LSteph,

Encore merci pour ta précision ça marche super.

Par contre le nombre que j'importe en $B$1, ce répète plusieurs fois
alors
qu'il ne change pas sur la feulle d'origine.

Désolé de venir encore t'importuner.

Bonne soirée
bouak



Bonsoir,
oui enlever le msgbox et donc ceci suffit (pas besoins de+ mais mettre
dans
les bons modules)

'''***dans le thisworkbook
Public fiXb

Private Sub Workbook_Open()
fiXb = Feuil1.[b1]
End Sub
'''***
'''***dans le code de feuil1
Private Sub Worksheet_Activate()
fiXb = [b1]
End Sub

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
End Sub
''''*************************


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

LSteph Bonjour,

Merci BIEN pour ta précieuse aide,

Ca fonctionne bien sauf que j'ai une petite fenêtre qui s'ouvre et à
chaque
nouveau chiffre et je suis obligé de cliquer dessus ce qui n'est
absolument
pas pratique car beaucoup de nouveaux chiffres.

As-tu une solution... (STP peux-tu vérifier ci-dessous si j'ai pas
merdé...), je te précise que je n'ai aucune connaissance de
programmation,
j'ai donc exactement reporté comme ci-dessous dans feuil1.

Tu m'indiques

« Pour la condition du 0 dès qu'un 0 est saisi le dernier chiffre
de
la
colonne devient 0.Dès cet instant, c'est tout le temps a1 qui va
récupèrer
la
valeur de b1
Mais c'est toi qui vois, j'ai pas bien compris!. »

Pour moi ce qu'il me faut c'est simplement que chaque nouveau
chiffre
en
B1
s'inscrive dans la colonne A, au dessous du précédent qui reste
inscrit
ex.

B1 = 150 A1 = 150
B1 = 180 A2 = 180
B1 = 140 A3 = 140 ainsi desuite

Encore Merci

Bouak
___________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$1" Then Exit Sub

Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If

Application.EnableEvents = True
End Sub
_______________________________________________

Private Sub Worksheet_Calculate()
If fiXb = [b1].Value Then Exit Sub
Application.EnableEvents = False
If Cells([A65000].End(xlUp).Row, 1) = 0 Then
[A1] = [b1]
Else
Cells([A65000].End(xlUp).Row + 1, 1) = [b1]
End If
fiXb = [b1]
Application.EnableEvents = True
MsgBox fiXb
End Sub
_______________________________________________________

Private Sub thisworkbook()
Public fiXb

Private Sub Workbook_Open()
fiXb = feuil1.[b1]












1 2 3