Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[VBA EXCEL] Macro qui s'execute automatiqemnt

Boon, le vendredi 27 juillet 2007 à 15:45:05
Bonjour!

Je voudrais savoir s'il est possible de réaliser une macro qui :
1) S'ouvre en même temps que la feuille excel,
2) Se lance automatiquement lorsque l'utilisateur change la valeur d'une cellule précise.

Exemple (très simple, dans ma macro c'est pas ca!):
A5 = A3 + A6
Si je change la formule de A6 alors automatiquement la valeur de A5 aussi change.

Merci!!
Configuration: Windows XP
Firefox 2.0.0.5
Répondre à Boon  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Lupin.A, le vendredi 27 juillet 2007 à 16:02:01
Bonjour,

2 possibilités !

soit :

vous declarez une fonction personnalisé !
Public Function MaFonction (ByVal Cible As Range) As Variant
    Application.Volatile
    MaFonction = Cible.Value + 10
End Function


soit :

vous utlisé l'évènement derrière la feuille :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("A2").value = Target.Value + 10
End Sub


Lupin
Répondre à Lupin.A

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Boon, le vendredi 27 juillet 2007 à 16:06:29
Merci!

Je vais essayer de ce pas!
Répondre à Boon

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Boon, le vendredi 27 juillet 2007 à 18:26:36
Re Salut!

J'ai mis ce code dans "this Workbook" , mais rien ne se passe!
-----------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Cells(20, 2) = Target.Address
Range("A25").Value = Target.Value * 10
End Sub
----------------------------
Normalement, avec un code comme ca, la cellule A25 devrait m'afficher 10 fois la cellule B20 quand je change sa valeur, non?

Qu'est ce que je n'ai pas compris?
Répondre à Boon

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Lupin.A, le vendredi 27 juillet 2007 à 18:47:50
re:

en fait, au lieu de placer ce code derrière une feuille, celui-ci a été placé dans le module [ThisWorkbook].

ici, cela ne s'adresse pas à une simple feuille mais à tous le classeur ( toutes les feuilles ), il faut donc
un paramàtre supplémentaire. Les évènements dans le module [ThisWorkbook] sont plutôt :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    ' Code
    ' ...

End Sub
'

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    ' Code
    '...

End Sub


ou la feuille est désigné par [ Sh As Object ].

Lupin
Répondre à Lupin.A

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Boon, le vendredi 27 juillet 2007 à 19:02:47
Arf!
Je débute dans la programmation donc j'ai pas tout capté, dsl!

Voici le code que je viens de rentrer (j'ai remplacé le Private Sub mais je suis pas sur que c'est ca que j'aurai du faire...)

------------------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Cells(25, 1).Value = Target.Value
End Sub
-------------------------------------

Et maintenant, la cellule A25 me donne...l'heure!!!!!

J'y comprends plus rien!

Dany
Répondre à Boon

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Lupin.A, le vendredi 27 juillet 2007 à 21:20:45
------------------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Cells(25, 1).Value = Target.Value
End Sub
-------------------------------------

La feuille Sh ainsi que Target sont passé en paramètres

Sh est la feuille qui détecte le changement

Target est la cellule pointé par le changement ( la sélection )

Ce que tu modifie t'es renvoyé à la cellule A25 selon le format d'affichage qui lui est propre.

disons pour effectuer une demo :

Postulat : Place une valeur numérique en A1 pour 3 feuille :

Option Explicit

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    Select Case (Sh.Name)
        Case "Feuil1": Routine1 Target
        Case "Feuil2": Routine2 Target
        Case "Feuil3": Routine3 Target
    End Select
    
End Sub
'

Sub Routine1(ByVal Cible As Range)
    Cells(5, 1).Value = "Valeur = " & Cible.Value
End Sub
'

Sub Routine2(ByVal Cible As Range)
    Cells(5, 1).Value = "Adresse = " & Cible.Address
End Sub
'

Sub Routine3(ByVal Cible As Range)
    Cells(5, 1).Value = "Formule = " & Cible.Formula
End Sub
'


Lupin
Répondre à Lupin.A

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Boon, le samedi 28 juillet 2007 à 14:12:30
Merci, j'ai enfin compris comment ca marchait!

Mais je me rend compte que je suis confronté à un autre problème:

En fait, je voudrais avoir plusieurs target, et dans mon cas, elles sont dépendantes. Je m'explique:
Si je change B15, je veux que B16 change, mais
si je change B16, je veux que B15 change aussi.

J'ai donc mis ce code: (ne pas se préocupper des boucles, c'est rien du tout)
------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim a As Double

B15 = Target.Address

a = 33
Do While Cells(a, 1).Value <> Cells(15, 2).Value
a = a + 1
Loop

Range("B16").Value = Range("B" & a).Value

B16 = Target.Address

a = 33
Do While Cells(a, 2).Value <> Cells(16, 2).Value
a = a + 1
Loop

Range("B15").Value = Range("A" & a).Value

End Sub
--------------------------------------------------

Mais quand j'execute la macro, mon programme tourne en boucle, car si je change B15, ca change B16 qui change B15 qui change B16, etc...

Comment faire pour contourner ce problème???

Merci encore!!!
Répondre à Boon

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Lupin.A, le samedi 28 juillet 2007 à 16:33:39
re :

bonne nouvelle, je sais c'est pas toujours évident ! Il m'arrive de chercher aussi des heures !

bon pour le nouveau problème, si on s'en refère à la théorie, les changements que tu dois
détecter doivent provenir de l'extérieur, ceux de l'intérieur étant contrôlé par la routine
elle-même.

Par conséquent, je dirais qu'il ne te suffit que de désactivé les évènements durant le cycle de la routine.
Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim a As Double 

    Application.EnableEvents = False
    ' Code ...
    ' ...
    Application.EnableEvents = True

End Sub 
'

Lupin
Répondre à Lupin.A

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Boon, le samedi 28 juillet 2007 à 16:49:25
Merci encore!
Je vais essayer ca!
Répondre à Boon

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Boon, le samedi 28 juillet 2007 à 17:31:06
Re!

Je viens d'essayer de mettre les Application.EnableEvents , mais je peux maintenant seulement changer la cellule B16: Si je change la cellule B15, elle reste comme elle est (c'est à dire comme calculée à partir de la cellule 16)

Voilà le code que j'ai mis, en même temps, je suis pas du tout sûr d'avoir bien su utilisé les Application.EnableEvents = True:


----------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim a As Double

Application.EnableEvents = False

B16 = Target.Address

a = 33
Do While Cells(a, 2).Value <> Cells(16, 2).Value
a = a + 1
Loop
Range("B15").Value = Range("A" & a).Value

B15 = Target.Address

a = 33
Do While Cells(a, 1).Value <> Cells(15, 2).Value
a = a + 1
Loop
Range("B16").Value = Range("B" & a).Value

Application.EnableEvents = True

End Sub
---------------------------
Répondre à Boon

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Lupin.A, le samedi 28 juillet 2007 à 19:51:53
re salut,

2 choses qui m'apparaissent !

Si tu arrête la macro en cours d'utilisation et que l'instruction de réactivation ne passe
pas, il te faut réactiver les évènements :

Sub ActiveEvenements()
    Application.EnableEvents = True
End Sub
'



et pour bien cibler la cellule et le travail a effectuer :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Intersection As Range
    

    Set Intersection = Application.Intersect(Target, Range("B15"))
    If Intersection Is Nothing Then
        MsgBox "Pas dans la plage de B15"
        Set Intersection = Application.Intersect(Target, Range("B16"))
        If Intersection Is Nothing Then
            MsgBox "Pas dans la plage de B16"
        Else
            ' Ici le code pour B16
            ' ...
        End If
    Else
        ' Ici le code pour B15
        ' ...
    End If


End Sub
'


Lupin
Répondre à Lupin.A

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Boon, le samedi 28 juillet 2007 à 20:15:35
Merci!!!!!

Tout marche parfaitement!!

Merci beaucoup!!
Répondre à Boon

Résultats pour [VBA EXCEL] Macro qui s'execute automatiqemnt

[VBA, EXCEL] - Macro (Résolu) Bonjour, j'aurais besoin de vos conseils ici concernant VBA Excel. Je vous expose la situation pour ensuite expliquer ma problématique. Dans un fichier Excel, j'ai des tableaux qui me servent à quantifier la répartition de mes portefeuilles... www.commentcamarche.net/forum/affich-7339645-vba-excel-macro
VBA Excel - Ecrire dans fichier txt (Résolu) Bonjour à tous Je dois exécuter 2 macros en vba Excel, - une qui ouvre un fichier text et incrémente un tableau de variable, là pas de problème (voici le code épuré pour info) --------------------- Private Sub Command6_Click() On Error GoTo... www.commentcamarche.net/forum/affich-4854458-vba-excel-ecrire-dans-fichier-txt
VBA excel pb compatibilité (Résolu) bonjour a tous, voila j'ai créé par VBA une macro utilisant des userform. Aucun soucis sur mon pc mais dès que je le fais passer à une autre personne le programme bug dès le début en soulignant la userform_initialize en jaune. Bref il n'y a... www.commentcamarche.net/forum/affich-3365013-vba-excel-pb-compatibilite

Résultats pour [VBA EXCEL] Macro qui s'execute automatiqemnt

Créer un fichier Autorun.infCréation de fichier autorun Autoriser l'exécution automatique Création du fichier autorun.inf Personnaliser l'icône Personnaliser le texte Personnaliser le menu Autoriser l'exécution automatique Une fonctionnalité de Windows... www.commentcamarche.net/faq/sujet-12609-creer-un-fichier-autorun-inf

Résultats pour [VBA EXCEL] Macro qui s'execute automatiqemnt

Plus d'exécution automatique (Résolu)bonjour à tous C'est la première fois que je viens sur ce site............voilà mon problème depuis que j'ai réinitialisé mon disque dur, je n'ai plus aucune exécution automatique. Que ce soit en insérant un CD, ma clé USB ou un... www.commentcamarche.net/forum/affich-2161491-plus-d-execution-automatique
VBA excel formulaire de saisie - aide (Résolu)Bonjour, je suis débutant en VBA excel, et j'ai construis un formulaire de saisie (userform). Malheureusement je n'arrive pas à le finaliser... il me manque : a/ le numéro de transaction (TRANID) ne change pas lorsque j'appuie sur OK... www.commentcamarche.net/forum/affich-6740657-vba-excel-formulaire-de-saisie-aide
Supprimer l'exécution automatique (pas CD) ? (Résolu)Quelqu'un aurait-il trouvé le moyen d'empêcher ce maniaque de Windows de lancer "exécution automatique" à chaque fois qu'on lui branche ou que l'on démarre un disque ? J'en ai six externes, qui ne sont pas tous fonctionnels en... www.commentcamarche.net/forum/affich-2715318-supprimer-l-execution-automatique-pas-cd

Résultats pour [VBA EXCEL] Macro qui s'execute automatiqemnt

Télécharger EasyFacturesEasyfactures est un logiciel capable de gérer les factures et les devis, il a été développé sur Excel. Easyfactures montre un état de paiement de chaque facture, les enregistre dans des fichiers Excel séparés, crée automatiquement la base de... www.commentcamarche.net/telecharger/telecharger-34055426-easyfactures
Télécharger MAKEMSISi vous avez créé un nouveau programme que vous voudriez bien placer sur un site Web, il faut que le programme puisse s'exécuter automatiquement pour son installation. MAKEMSI est un utilitaire permettant de créer facilement et efficacement un mode... www.commentcamarche.net/telecharger/telecharger-34056514-makemsi
Télécharger AutoTask 2000Pourquoi perdre du temps à répéter les mêmes tâches tous les jours sur votre ordinateur. AutoTask 2000 peut les exécuter automatiquement. Quand vous utilisez votre PC à la maison ou au travail, probablement que vous devez exécuter des routines... www.commentcamarche.net/telecharger/telecharger-34056346-autotask-2000

Résultats pour [VBA EXCEL] Macro qui s'execute automatiqemnt

Linux - Ordonnancement des tachesIntroduction à l'ordonnancement des tâches L'ordonnancement des tâches consiste à exécuter automatiquement une tâche (une application, une commande, ...) à intervalles de temps réguliers ou bien à des moments précis. Généralement ce type de... www.commentcamarche.net/contents/tutlinux/lincron.php3
Autorun - autorun.exeautorun - autorun.exe Le processus autorun.exe (autorun) est un processus générique de Windows 98/NT/Me/2000/XP servant à exécuter automatiquement un programme lors de l'insertion d'un CD-ROM dans le lecteur. Le processus autorun n'est en aucun... www.commentcamarche.net/contents/processus/autorun-exe.php3
Mstask - mstask.exemstask - mstask.exe Le processus mstask.exe (mstask signifiant Microsoft Task Scheduler) est un processus générique de Windows NT/2000/XP servant à planifier l'exécution automatique de tâches (sauvegardes, lancement d'une application, mises à jour,... www.commentcamarche.net/contents/processus/mstask-exe.php3