OVH Cloud OVH Cloud

Prog VBA

7 réponses
Avatar
Janet81
Bonjour, c'est encore moi!

Comment lier un code VBA à une cellule de la feuille de calcul (si c'est
possible) un peu comme on affecte une macro à un bouton?

Merci de votre aide

7 réponses

Avatar
ru-th
Salut

c'est possible , en selectionnant la feuille dans la fenetre projectVBA,
dans l'éditeur VBE, puis choisir Worksheet à la place de Général dans la
grande fenêtre code, et l'évenement qui doit déclencher l'execution,
activate, close, selection _change,...
Reste à savoir ton besoin exact...
a+
rural thierry
"Janet81" a écrit dans le message de
news:
Bonjour, c'est encore moi!

Comment lier un code VBA à une cellule de la feuille de calcul (si c'est
possible) un peu comme on affecte une macro à un bouton?

Merci de votre aide


Avatar
Janet81
Voici la partie du message que je ne comprend pas, le reste marche jusqu'à
présent:
activate, close, selection _change,...



Salut

c'est possible , en selectionnant la feuille dans la fenetre projectVBA,
dans l'éditeur VBE, puis choisir Worksheet à la place de Général dans la
grande fenêtre code, et l'évenement qui doit déclencher l'execution,
activate, close, selection _change,...
Reste à savoir ton besoin exact...
a+
rural thierry
"Janet81" a écrit dans le message de
news:
Bonjour, c'est encore moi!

Comment lier un code VBA à une cellule de la feuille de calcul (si c'est
possible) un peu comme on affecte une macro à un bouton?

Merci de votre aide







Avatar
ru-th
Re

le principe des modules feuille (de même pour le classeur Thisworkbook) est
de s'activer en fonction d'évenements déclencheurs

par exemple, on souhaite un rafraichissement automatique de tableaux croisés
située dans une feuille
et bien on utilisera, l'évenement activate pour mettre le code de
rafraichissement
sub worksheet_activate
...

si on souhaite qu'à chaque fois que l'on frappe quelque chose, cela
s'inscrive en majuscule, on utilisera l'évenement change
sub worksheet_change

etc...


il serait bon que nous puissions savoir ce que tu souhaites faire dans ta
feuille pour pouvoir te renseigner de manière plus précise.
Ne voit pas là une indiscrétion de notre part, mais nos capacités en
divination sont parfois réduite...

;-)

a+
rural thierry
"Janet81" a écrit dans le message de
news:
Voici la partie du message que je ne comprend pas, le reste marche jusqu'à
présent:
activate, close, selection _change,...



Salut

c'est possible , en selectionnant la feuille dans la fenetre
projectVBA,


dans l'éditeur VBE, puis choisir Worksheet à la place de Général dans la
grande fenêtre code, et l'évenement qui doit déclencher l'execution,
activate, close, selection _change,...
Reste à savoir ton besoin exact...
a+
rural thierry
"Janet81" a écrit dans le message de
news:
Bonjour, c'est encore moi!

Comment lier un code VBA à une cellule de la feuille de calcul (si
c'est



possible) un peu comme on affecte une macro à un bouton?

Merci de votre aide









Avatar
Janet81
Voici le code (corrigez-le éventuellement) que j'ai envie d'affecter à la
cellule H10:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim RC As Integer
If RE > 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = RE + RF + RHAO]

ElseIf RE < 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = (RF + RHAO) - RE]

ElseIf RE < 0 And RF < 0 And RHAO < 0 Then
[H10] = [RC = -(RE + RF + RHAO)]

ElseIf RE < 0 And RF < 0 And RHAO > 0 Then
[H10] = [RC = RHAO - (RE + RF)]

ElseIf RF < 0 And RE > 0 And RHAO > 0 Then
[H10] = [RC = (RE + RHAO) - RF]

ElseIf RHAO < 0 And RE > 0 And RF > 0 Then
[H10] = [RC = (RE + RF) - RHAO]

ElseIf RHAO < 0 And RE > 0 And RF < 0 Then
[H10] = [RC = RE - (RHAO + RF)]

ElseIf RHAO < 0 And RE > 0 And RF > 0 Then
[H10] = [RC = RF - (RE + RHAO)]

End If
essai = RC
End Sub

Je tiens à préciser que je n'ai aucune notion en programmation et que
l'interface de VB me fait plutôt peur...

Merci


Re

le principe des modules feuille (de même pour le classeur Thisworkbook) est
de s'activer en fonction d'évenements déclencheurs

par exemple, on souhaite un rafraichissement automatique de tableaux croisés
située dans une feuille
et bien on utilisera, l'évenement activate pour mettre le code de
rafraichissement
sub worksheet_activate
....

si on souhaite qu'à chaque fois que l'on frappe quelque chose, cela
s'inscrive en majuscule, on utilisera l'évenement change
sub worksheet_change

etc...


il serait bon que nous puissions savoir ce que tu souhaites faire dans ta
feuille pour pouvoir te renseigner de manière plus précise.
Ne voit pas là une indiscrétion de notre part, mais nos capacités en
divination sont parfois réduite...

;-)

a+
rural thierry
"Janet81" a écrit dans le message de
news:
Voici la partie du message que je ne comprend pas, le reste marche jusqu'à
présent:
activate, close, selection _change,...



Salut

c'est possible , en selectionnant la feuille dans la fenetre
projectVBA,


dans l'éditeur VBE, puis choisir Worksheet à la place de Général dans la
grande fenêtre code, et l'évenement qui doit déclencher l'execution,
activate, close, selection _change,...
Reste à savoir ton besoin exact...
a+
rural thierry
"Janet81" a écrit dans le message de
news:
Bonjour, c'est encore moi!

Comment lier un code VBA à une cellule de la feuille de calcul (si
c'est



possible) un peu comme on affecte une macro à un bouton?

Merci de votre aide














Avatar
Bruno LOUIS
Salut Janet81,

1°) L'événement "Worksheet_SelectionChange" ne me paraît pas adapté à ce que
tu veux faire. L'événement "Worksheet_Change" me paraitrait plus adéquate.


2°) Le choix d'une variable entière (Integer) ne parait pas davantage
judicieux. Tes résultats devront se situer entre -32768 ? et 32767 ?.
Utilise plutôt le format Double (qui autorise également les nombres à
virgule).

Dim RC As Double

3°) L'affectation d'une valeur à une cellule se fait par
Sheets("Feuil1").Range("H10") = MaValeur

4°) Excel ne peut pas deviner ce que tu appelles RE, RF, RHAO, tu devras les
définir auparavant.
RE = sheets("Feuil1").Range("H1") 'Exemple

5°) Au vu de la nature des travaux demandé à Excel, il semblerait que
l'utilisation de Macro VBA ne soit pas indispensable. Excel sait faire cela
avec des formules.

6°) Cependant, si tu tiens à faire du VBA, je suis pas sûr de comprendre la
logique de tes formules. Exemple tu cites :

ElseIf RE < 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = (RF + RHAO) - RE]
Si RE est négatif, alors tu le soustraits aux deux autres pour obtenir ton
résultat comptable. Or soustraire un négatif revient revient à ajouter sa
valeur absolue.

Tu sites également :

If RE > 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = RE + RF + RHAO]
Si RE est positif, alors tu additionnes aussi sa valeur absolue.

Moralité : quelque soit le singe de RE, il faut additionner sa valeur
absolue.

Tu sites encore :
ElseIf RE < 0 And RF < 0 And RHAO < 0 Then
[H10] = [RC = -(RE + RF + RHAO)]
Si tout le monde est négatif, alors additionner tout le monde (résultat
négatif donc) et tu prends le signe contraire (soit la valeur absolue).

En conclusion, tu ne veux que des résultats positifs. Tes formules me semble
un peu compliquées. Essaie plutôt un truc du genre :
RC = ABS(RE) + ABS(RF) + ABS(RHAO) ' Là, le résultat sera toujours positif
et ne tient pas compte des signes des différents membres.


Salutations,

Bruno

"Janet81" a écrit dans le message de
news:
Voici le code (corrigez-le éventuellement) que j'ai envie d'affecter à la
cellule H10:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim RC As Integer
If RE > 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = RE + RF + RHAO]

ElseIf RE < 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = (RF + RHAO) - RE]

ElseIf RE < 0 And RF < 0 And RHAO < 0 Then
[H10] = [RC = -(RE + RF + RHAO)]

ElseIf RE < 0 And RF < 0 And RHAO > 0 Then
[H10] = [RC = RHAO - (RE + RF)]

ElseIf RF < 0 And RE > 0 And RHAO > 0 Then
[H10] = [RC = (RE + RHAO) - RF]

ElseIf RHAO < 0 And RE > 0 And RF > 0 Then
[H10] = [RC = (RE + RF) - RHAO]

ElseIf RHAO < 0 And RE > 0 And RF < 0 Then
[H10] = [RC = RE - (RHAO + RF)]

ElseIf RHAO < 0 And RE > 0 And RF > 0 Then
[H10] = [RC = RF - (RE + RHAO)]

End If
essai = RC
End Sub

Je tiens à préciser que je n'ai aucune notion en programmation et que
l'interface de VB me fait plutôt peur...

Merci


Avatar
Martin
En tant que spectateur sur ce forum, je dis WOW a la reponse de Bruno.

Même si ce n'est pas moi qui a posé la question, merci, ça va certainement
me servir un jour!

Bonne journée à tous

Martin

"Bruno LOUIS" a écrit dans le message de
news: 41c0448a$0$10225$
Salut Janet81,

1°) L'événement "Worksheet_SelectionChange" ne me paraît pas adapté à ce
que

tu veux faire. L'événement "Worksheet_Change" me paraitrait plus adéquate.


2°) Le choix d'une variable entière (Integer) ne parait pas davantage
judicieux. Tes résultats devront se situer entre -32768 ? et 32767 ?.
Utilise plutôt le format Double (qui autorise également les nombres à
virgule).

Dim RC As Double

3°) L'affectation d'une valeur à une cellule se fait par
Sheets("Feuil1").Range("H10") = MaValeur

4°) Excel ne peut pas deviner ce que tu appelles RE, RF, RHAO, tu devras
les

définir auparavant.
RE = sheets("Feuil1").Range("H1") 'Exemple

5°) Au vu de la nature des travaux demandé à Excel, il semblerait que
l'utilisation de Macro VBA ne soit pas indispensable. Excel sait faire
cela

avec des formules.

6°) Cependant, si tu tiens à faire du VBA, je suis pas sûr de comprendre
la

logique de tes formules. Exemple tu cites :

ElseIf RE < 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = (RF + RHAO) - RE]
Si RE est négatif, alors tu le soustraits aux deux autres pour obtenir ton
résultat comptable. Or soustraire un négatif revient revient à ajouter sa
valeur absolue.

Tu sites également :

If RE > 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = RE + RF + RHAO]
Si RE est positif, alors tu additionnes aussi sa valeur absolue.

Moralité : quelque soit le singe de RE, il faut additionner sa valeur
absolue.

Tu sites encore :
ElseIf RE < 0 And RF < 0 And RHAO < 0 Then
[H10] = [RC = -(RE + RF + RHAO)]
Si tout le monde est négatif, alors additionner tout le monde (résultat
négatif donc) et tu prends le signe contraire (soit la valeur absolue).

En conclusion, tu ne veux que des résultats positifs. Tes formules me
semble

un peu compliquées. Essaie plutôt un truc du genre :
RC = ABS(RE) + ABS(RF) + ABS(RHAO) ' Là, le résultat sera toujours positif
et ne tient pas compte des signes des différents membres.


Salutations,

Bruno

"Janet81" a écrit dans le message de
news:
Voici le code (corrigez-le éventuellement) que j'ai envie d'affecter à
la


cellule H10:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim RC As Integer
If RE > 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = RE + RF + RHAO]

ElseIf RE < 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = (RF + RHAO) - RE]

ElseIf RE < 0 And RF < 0 And RHAO < 0 Then
[H10] = [RC = -(RE + RF + RHAO)]

ElseIf RE < 0 And RF < 0 And RHAO > 0 Then
[H10] = [RC = RHAO - (RE + RF)]

ElseIf RF < 0 And RE > 0 And RHAO > 0 Then
[H10] = [RC = (RE + RHAO) - RF]

ElseIf RHAO < 0 And RE > 0 And RF > 0 Then
[H10] = [RC = (RE + RF) - RHAO]

ElseIf RHAO < 0 And RE > 0 And RF < 0 Then
[H10] = [RC = RE - (RHAO + RF)]

ElseIf RHAO < 0 And RE > 0 And RF > 0 Then
[H10] = [RC = RF - (RE + RHAO)]

End If
essai = RC
End Sub

Je tiens à préciser que je n'ai aucune notion en programmation et que
l'interface de VB me fait plutôt peur...

Merci






Avatar
twinley
il a un moral de lion dans cette jungle. J'ai même vu des singes...

twinley


Martin wrote:
En tant que spectateur sur ce forum, je dis WOW a la reponse de Bruno.

Même si ce n'est pas moi qui a posé la question, merci, ça va certainement
me servir un jour!

Bonne journée à tous

Martin

"Bruno LOUIS" a écrit dans le message de
news: 41c0448a$0$10225$

Salut Janet81,

1°) L'événement "Worksheet_SelectionChange" ne me paraît pas adapté à ce


que

tu veux faire. L'événement "Worksheet_Change" me paraitrait plus adéquate.


2°) Le choix d'une variable entière (Integer) ne parait pas davantage
judicieux. Tes résultats devront se situer entre -32768 ? et 32767 ?.
Utilise plutôt le format Double (qui autorise également les nombres à
virgule).

Dim RC As Double

3°) L'affectation d'une valeur à une cellule se fait par
Sheets("Feuil1").Range("H10") = MaValeur

4°) Excel ne peut pas deviner ce que tu appelles RE, RF, RHAO, tu devras


les

définir auparavant.
RE = sheets("Feuil1").Range("H1") 'Exemple

5°) Au vu de la nature des travaux demandé à Excel, il semblerait que
l'utilisation de Macro VBA ne soit pas indispensable. Excel sait faire


cela

avec des formules.

6°) Cependant, si tu tiens à faire du VBA, je suis pas sûr de comprendre


la

logique de tes formules. Exemple tu cites :

ElseIf RE < 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = (RF + RHAO) - RE]
Si RE est négatif, alors tu le soustraits aux deux autres pour obtenir ton
résultat comptable. Or soustraire un négatif revient revient à ajouter sa
valeur absolue.

Tu sites également :

If RE > 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = RE + RF + RHAO]
Si RE est positif, alors tu additionnes aussi sa valeur absolue.

Moralité : quelque soit le singe de RE, il faut additionner sa valeur
absolue.

Tu sites encore :
ElseIf RE < 0 And RF < 0 And RHAO < 0 Then
[H10] = [RC = -(RE + RF + RHAO)]
Si tout le monde est négatif, alors additionner tout le monde (résultat
négatif donc) et tu prends le signe contraire (soit la valeur absolue).

En conclusion, tu ne veux que des résultats positifs. Tes formules me


semble

un peu compliquées. Essaie plutôt un truc du genre :
RC = ABS(RE) + ABS(RF) + ABS(RHAO) ' Là, le résultat sera toujours positif
et ne tient pas compte des signes des différents membres.


Salutations,

Bruno

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

Voici le code (corrigez-le éventuellement) que j'ai envie d'affecter à



la

cellule H10:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim RC As Integer
If RE > 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = RE + RF + RHAO]

ElseIf RE < 0 And RF > 0 And RHAO > 0 Then
[H10] = [RC = (RF + RHAO) - RE]

ElseIf RE < 0 And RF < 0 And RHAO < 0 Then
[H10] = [RC = -(RE + RF + RHAO)]

ElseIf RE < 0 And RF < 0 And RHAO > 0 Then
[H10] = [RC = RHAO - (RE + RF)]

ElseIf RF < 0 And RE > 0 And RHAO > 0 Then
[H10] = [RC = (RE + RHAO) - RF]

ElseIf RHAO < 0 And RE > 0 And RF > 0 Then
[H10] = [RC = (RE + RF) - RHAO]

ElseIf RHAO < 0 And RE > 0 And RF < 0 Then
[H10] = [RC = RE - (RHAO + RF)]

ElseIf RHAO < 0 And RE > 0 And RF > 0 Then
[H10] = [RC = RF - (RE + RHAO)]

End If
essai = RC
End Sub

Je tiens à préciser que je n'ai aucune notion en programmation et que
l'interface de VB me fait plutôt peur...

Merci