Vb executer bouton à l'ouverture d'excel

MissExcel -  
 MissExcel -
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!

13 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  2. MissExcel
     
    Merci ! ca fonctionne !
    Et comment appeler una macro du type : private Sub Worksheet_Change(ByVal Target As Range) ?
    Merci !
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  4. MissExcel
     
    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
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. MissExcel
     
    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
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  8. MissExcel
     
    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
  9. MissExcel
     
    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
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  11. MissExcel
     
    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
  12. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  13. MissExcel
     
    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
  14. MissExcel
     
    j'ai trouvé : Interior.ColorIndex = xlNone
    merci !
    0