Vb executer bouton à l'ouverture d'excel

Fermé
MissExcel - 16 juil. 2009 à 10:51
 MissExcel - 21 juil. 2009 à 11:39
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!
A voir également:

13 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
16 juil. 2009 à 11:20
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+
0
Merci ! ca fonctionne !
Et comment appeler una macro du type : private Sub Worksheet_Change(ByVal Target As Range) ?
Merci !
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
16 juil. 2009 à 14:23
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+
0
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 !
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 juil. 2009 à 13:32
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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!
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 juil. 2009 à 15:53
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+
0
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.
0
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 !
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 juil. 2009 à 15:58
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+
0
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 !
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 juil. 2009 à 16:21
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

0
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!
0
j'ai trouvé : Interior.ColorIndex = xlNone
merci !
0