Rechercher : dans
Par :

Vb executer bouton à l'ouverture d'excel

Dernière réponse le 21 jui 2009 à 11:39:53 MissExcel, le 16 jui 2009 à 10:51:10 
 Signaler ce message aux modérateurs

Bonjour,
Voila dans un userform j'ai un bouton bouton1_click qui execute une macro, dans cette macro il y a déja un call.
je voudrai dès qu'on ouvre le fichier excel, il execute la macro.
J'ai pensé à :

Private Sub Workbook_Open()

call bouton1_click
Mais ca ne marche pas, car ce n'est pas dans un module?

comment faire en sorte, quand on ouvre le fichier excel, mon bouton1 s'execute.
merci!

Meilleures réponses pour « vb executer bouton à l'ouverture d'excel » dans :
Exécuter une macro Voir Exécuter une macro Excel et Calc proposent plusieurs façons d’exécuter une macro : en la sélectionnant dans une liste, dans la boîte de dialogue Macro ; par un raccourci clavier ; en l’attachant à un bouton de la barre d’outils ; ...

1

lermite222, le 16 jui 2009 à 11:20:26

Bonjour,
Tu doit mettre la sub Clic du bouton en Public (à la place de Private)
et ensuite

Private Sub Workbook_Open()

Call UserForm1.CommandButton1_Click
Unload UserForm1
A+
L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

2

MissExcel, le 16 jui 2009 à 14:11:48

Merci ! ca fonctionne !
Et comment appeler una macro du type : private Sub Worksheet_Change(ByVal Target As Range) ?
Merci !

Répondre à MissExcel

3

lermite222, le 16 jui 2009 à 14:23:57

De la même façon, sauf que tu doit donner une valeur, en l'occurance un Range...

    LeNomDeLaFeuille.Worksheet_Change(Range("A1")) 

Par exemple.
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

4

MissExcel, le 16 jui 2009 à 15:39:29

Le problème c'est que dans mon instruction : Worksheet_Change(ByVal Target As Range) j'ai beaucoup de if vérifiant des valeurs dans des range. donc je ne peux pas spécifier une range unique !
De plus, mon instruction worksheet_change ne marche pas très bien, je veux des que je modifi quelque chose dans ma feuille, il fasse tous les tests que j'ai fait. désolé si ces questions sortent du sujet.
Merci !

Répondre à MissExcel

5

lermite222, le 17 jui 2009 à 13:32:21

Le range A1 c'était pour l'exemple, tu peu mettre une plage, A1:C25 par exemple.
Pour les test c'est pas possible de te répondre comme ça, sans renseignement.
Tu peu mettre un exemple de ton classeur sur Cjoint ? L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

6

MissExcel, le 17 jui 2009 à 15:30:35

Public Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False



If Range("O160") <> "" Then
Range("L160").Interior.Color = RGB(51, 51, 255)
Else: Range("L160").Interior.Color = RGB(255, 255, 255)

End If

If Range("l160").Value <> "" Then
Range("L160").Interior.Color = RGB(255, 255, 255)
End If


If Range("O160") <> "" Then
Range("M160").Interior.Color = RGB(51, 51, 255)
Else: Range("M160").Interior.Color = RGB(255, 255, 255)
End If
end sub

Ce code est placé dans Feuil1 et la procédure ne s'execute pas dès que je modifi soit O160 soit L160 !
Merci!

Répondre à MissExcel

7

lermite222, le 17 jui 2009 à 15:53:36

Normal, dés que tu fait UN changement dans ta feuille tu passe par...

Application.EnableEvents = False 
et où est...
Application.EnableEvents = True

Sans ça la fonction n'est plus appellée, aucune fonction de feuille d'ailleur.
A+ L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

8

MissExcel, le 20 jui 2009 à 09:35:44

Application.EnableEvents = False
If Range("O160") <> "" Then
Range("L160").Interior.Color = RGB(51, 51, 255)
Else: Range("L160").Interior.Color = RGB(255, 255, 255)
Application.EnableEvents =true

End If
c'est bon comme ca? j'ai mi Application.EnableEvents = False parce que ma macro ralentissait tout.

Répondre à MissExcel

9

MissExcel, le 20 jui 2009 à 10:21:46

J'ai fai comme au dessus, ca fonctionne merci !
J'ai une autre question, j'ai bnesoin d'appliquer ma macro sur toute la colonne O et pas seulement sur O160, comment faire?

private sub test
If Range("O160") <> "" Then
Range("L160").Interior.Color = RGB(51, 51, 255)
Else: Range("L160").Interior.Color = RGB(255, 255, 255)

End If

comment faire en sorte que si n'importe quelle cellule dans la clonne O est différent de "" (<> "") alors la cellule relative dans la colonne L devient bleu.Quelque chose comme ca, mais ca ne fonctionne pas.

private sub test
 For i = 1 To [O65536].End(xlUp).Row

If Cells(i, "O") <> "" Then 
    Cells(i, "O").Interior.Color = RGB(51, 51, 255) 
Else: Range("L").Interior.Color = RGB(255, 255, 255) 

End If 


Merci d'avance !

Répondre à MissExcel

10

lermite222, le 20 jui 2009 à 15:58:27

Re,

Private Sub test()
Dim Lig As Long
     For Lig = 1 To [O65536].End(xlUp).Row
        If Cells(Lig, 15) <> "" Then
            Cells(Lig, 15).Interior.Color = RGB(51, 51, 255)
        Else
            Cells(Lig, 15).Interior.Color = RGB(255, 255, 255)
        End If
    Next Lig
End Sub

Mais pour faire ça tu pourrais tout simplement employer une MFC (Mise en forme conditionnel)
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

11

MissExcel, le 20 jui 2009 à 16:10:14

J'ai atteint le maximum de MEF, donc je dois les développer ! dommage !
Merci pour ton code !
Par contre, ta macro dit que : si une des cellules dans la colonnne O est remplit, toutes les cellules ou il ya du texte dedans sont bleu.
Or, je voudrai que si n'importe quelle cellule de la colonne O est remplit, la cellule relative dans la colonne L devient bleu si elle est vide.
Exemple : j'entre du texte dans une cellule au hasard admettons "O123 alors si "L123 est vide, "L123" est coloriser en bleu.

Merci de m'aider !

Répondre à MissExcel

12

lermite222, le 20 jui 2009 à 16:21:07

Faudrait que tu commence à réfléchir un tout,tout petit peu...

Private Sub test()
Dim Lig As Long
     For Lig = 1 To [O65536].End(xlUp).Row
        If Cells(Lig, 15) <> "" And Cells(Lig, 12) = "" Then
            Cells(Lig, 12).Interior.Color = RGB(51, 51, 255)
        Else
            Cells(Lig, 12).Interior.Color = RGB(255, 255, 255)
        End If
    Next Lig
End Sub

L'expérience instruit plus sûrement que le conseil. (André Gide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

13

MissExcel, le 21 jui 2009 à 09:24:01

Oui lol c'est vrai, dsl.
Par contre, lorsqu'il fait le test, il enleve les contours des cellules, ce qui fait qu'une plage de cellules devient blanc sans quadrillage !
comment faire pour empecher ca? merci!

Répondre à MissExcel

14

 MissExcel, le 21 jui 2009 à 11:39:53

J'ai trouvé : Interior.ColorIndex = xlNone
merci !

Répondre à MissExcel