IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 74
    Par défaut macro
    g crée des macro sur excel ,mais je ne c que les affecter à un bouton ,je voudrais que lapage lefaisse seul

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Par défaut
    Tu as essayé d'écrire ta macro dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    'MACRO
    End Sub


  3. #3
    Membre chevronné Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Par défaut
    Il faut, comme le dit flo_flo, définir l'évènement qui lancera ta macro.
    par exemple si c'est lors d'une modification dans la colonne "G" il te faudra faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 7 Then
            Application.run TaMacro
        End If
    End Sub

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Aurtograffe mise à part, peux-tu exposer clairement ton problème ? On est tout prêt à t'aider, encore faut-il comprendre ce que tu désires...
    Alors on te dira tout ça gentiment

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 74
    Par défaut
    ok je vais expliquer ça clairement ,j'ais un projet sur excel mais le probleme c'est que je ne sais pas créé une macro sans l affecter a un boutton .je voudrais que cette operation ce fais automatiquement voila mon prog


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    Sub Primaire()
    ''i est un numéro de ligne
    Dim i As Integer
    Dim a As Range, f As Range
     
    Dim j As Boolean
    'idem
     
    Dim ligne_début As String
     
    Dim ligne_fin As String
     
    Dim ligne As Integer
    'Invite pour la ligne de départ
     
        ligne_début = InputBox("Placer : Ligne début ?")
        'La ligne de début doit être numérique et supérieure ou égale à 15
     
        Do Until IsNumeric(ligne_début) And ligne_début >= 15
     
            ligne_début = InputBox("N'importe quoi! Il faut donner un numéro de ligne Supérieur ou égal à 15!!!")
     
        Loop
     
        'Invite pour la ligne de fin
     
        ligne_fin = InputBox("Placer : Ligne fin ?")
     
        'La ligne de fin doit être numérique et supérieure à la ligne de début
     
        Do Until IsNumeric(ligne_fin) And ligne_fin > ligne_début
     
            ligne_fin = InputBox("N'importe quoi! Il faut donner un numéro de ligne Supérieur à la ligne de départ. Jean-phi !!!")
     
        Loop
     
     
     
     
    'Pour i de la ligne de début a la derniere ligne choisie
     
    For i = ligne_début To ligne_fin
     
         'a est la CELLULE (i,4)
     
          Set a = Sheets("planning").Cells(i, 5)
     
         'f est la CELLULE (i,5)
     
          Set f = Sheets("planning").Cells(i, 7)
     
         'Si a = "Salut"
     
          If a = "salut" Then
     
              f = "bonjour"
     
             Else
     
             f = "bye"
     
     
          End If
     
    'Ligne suivante
     
    Next i
     
     For i = ligne_début To ligne_fin
     
         'a est la CELLULE (i,5)
     
          Set a = Sheets("planning").Cells(i, 8)
     
         'f est la CELLULE (i,7)
     
          Set f = Sheets("planning").Cells(i, 10)
     
         'Si a = vide alors
     
          If a = "" Then
     
             f = ""
     
          End If
     
    'Ligne suivante
     
    Next i
     
    End Sub

  6. #6
    Membre chevronné Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Par défaut
    Citation Envoyé par booskap
    je voudrais que cette operation ce fais automatiquement voila mon prog
    automatiquement, mais dans quel cas ?
    • A l'ouverture du classeur ?
    • Lors d'une certaine selection ?
    • Lors d'une modification dans une certaine cellule ? Ligne ? Colonne ?
    • A une certaine heure ?
    • A la fermeture du classeur ?
    • A l'activation d'une certaine feuille de ton classeur ?
    • Un condition certaine mais autre ?

    On a beau te taquiner sur quelques petites fautes d'orthographe, ce serait bien si tu lisais tout .

    Je t'explique le pourquoi de ces questions. Dans le cas de l'évènement :L'endroit ou ton code devra être placé changera.

    Donc une nouvelle fois : Explique clairement ton problème, mais vant tout comprends le parfaitement de ton côté.

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bon, je crois que mordrhim t'a tout bien expliqué... Il ne manque qu'une petite chose... Pour placer ton code dans l'un des événements qu'il indique, tu as plusieurs moyens d'accéder au code.
    Je suppose que tu veux lancer ton code à l'ouverture du classeur, auquel cas celui-ci sera placé dans Private Sub Workbook_Open() (dixit mordrhim)
    Pour accéder à cette macro, dans Excel, tu vas dans le menu Outils -> Macros -> Visual basic editor
    Tu te retrouves alors dans l'éditeur VBA
    Deux clics sur VBAproject(nom de ton classeur) font apparaître "Thisworkbook"
    Deux clics sur Thisworkbook ouvre une fenêtre
    Dans cette fenêtre, deux clics ouvrent "Général" en haut à gauche, là tu fais un clic sur Workbook.
    Ouf ! ta macro Private Sub Workbook_Open() apparaît
    Dans cette macro tu mets le nom de la macro "Primaire" (sans les guillemets...) Cette ligne suffira pour lancer ta macro.
    Dans la fenêtre en haut à droite, tu trouveras tous les événements que peut subir ton classeur -> SheetActivate SheetCalculate... etc.

    Je passe à ta macro "Primaire" qui devrait se trouver dans la feuille de code de la feuille de calcul dans laquelle se trouve ton bouton... Elle n'est plus au bon endroit.
    Dans l'éditeur VBA, tu vas dans "Insertion" -> Module
    Une nouvelle fenêtre apparaît
    C'est dans ce module que tu places ta macro Primaire.

    On peut faire autrement mais commence déjà par là avant que mordrhim se fâche vraiment

    Dernier truc : Pour les macros s'exécutant sur les événements survenant aux feuilles de calculs, leur code se trouve, dans l'éditeur VBA, sous le nom de la feuille concernée, en dessus de ThisWorkbook.
    Après, tu visites... ça mord pas
    A+

  8. #8
    Membre chevronné Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Par défaut
    Citation Envoyé par ouskel'n'or
    On peut faire autrement mais commence déjà par là avant que mordrhim se fâche vraiment
    T_T s'pas vrai j'me fache pô !! apres moi j'vais passer pour le méchant de service T_T

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 74
    Par défaut
    c quand une modification dans certaine Ligne Colonne que dois ce produire cette automatisme voici le prog qui dois faire executer l'operation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    Sub placer()
    Dim i As Integer
     
    Dim j As Boolean
     
    Dim ligne_début As String
     
    Dim ligne_fin As String
     
    Dim ligne As Integer
    Dim lig_source As Integer
     
    Dim col_source As Integer
     
    vehicule = Cells(1, 18)
    'Demander le numéro de la ligne de début
     
    'Demander le numéro de la ligne de début
     
    'Invite pour la ligne de départ
        ligne_début = InputBox("Placer : Ligne début ?")
        'La ligne de début doit être numérique et supérieure ou égale à 15
        Do Until IsNumeric(ligne_début) And ligne_début >= 15
            ligne_début = InputBox("N'importe quoi! Il faut donner un numéro de ligne Supérieur ou égal à 15!!!")
        Loop
     
        'Invite pour la ligne de fin
        ligne_fin = InputBox("Placer : Ligne fin ?")
        'La ligne de fin doit être numérique et supérieure à la ligne de début
        Do Until IsNumeric(ligne_fin) And ligne_fin > ligne_début
            ligne_fin = InputBox("N'importe quoi! Il faut donner un numéro de ligne Supérieur à la ligne de début!")
        Loop
     
     
     
     
      For ligne = ligne_début To ligne_fin
     
        If Cells(ligne, 3) <> vehicule Or Cells(ligne, 5) <> 0 Then
     
     
        End If
        type_piece = Cells(ligne, 2)
        For col_source = 36 To 50
        For lig_source = 7 To 500
            'si pas de référence, alors saut2
     
            If Sheets(vehicule).Cells(lig_source, 1) = "" Then
              lig_source = lig_source + 1
              col_source = col_source + 1
             End If
            ' teste type_pièce et soit manquants,
            ' soit (sur J+3 : stock + encours camions + placé < stock mini)
            If type_piece = Sheets(vehicule).Cells(lig_source, 3) And _
              (Sheets(vehicule).Cells(lig_source, col_source) < 0 Or _
              (col_source >= 39 And _
               Sheets(vehicule).Cells(lig_source, 6) + _
               Sheets(vehicule).Cells(lig_source, 16) + _
               Sheets(vehicule).Cells(lig_source, 18) < _
               Sheets(vehicule).Cells(lig_source, 7))) _
               Then
                 Cells(ligne, 7) = Cells(ligne, 6) * Sheets(vehicule).Cells(lig_source, 5): _
                 Sheets(vehicule).Cells(lig_source, 18) = Sheets(vehicule).Cells(lig_source, 18) + _
                    Int(Cells(ligne, 7) * (1 - Sheets(vehicule).Cells(4, 2))): _
                 Cells(ligne, 5) = Sheets(vehicule).Cells(lig_source, 4): _
                 Cells(ligne, 4) = Sheets(vehicule).Cells(lig_source, 1): _
                End If
         Next
         Next
      Next
     
     
     
    End
     
     
    End Sub
    Sub enlever()
        vehicule = Cells(1, 18)
     
    ligne_début = InputBox("Placer : Ligne début ?")
     
     
     
    'Test de réponse exacte
     
    j = False
     
    Do While j = False
     
        j = True
     
        Do Until IsNumeric(ligne_début)
     
            ligne_début = InputBox("N'importe quoi! Il faut donner un numéro de ligne!!!")
     
            j = False
     
        Loop
     
     
     
        If ligne_début < 15 Then
     
            ligne_début = InputBox("Qu'est ce que tu crois?? La ligne 0 n'existe pas!")
     
            j = False
     
        End If
     
    Loop
     
     
     
    'Demander le numéro de ligne de fin
     
    ligne_fin = InputBox("Placer : Ligne fin ?")
     
     
     
    'Test de réponse exacte
     
     
     
    j = False
     
    Do While j = False
     
        j = True
     
        Do Until IsNumeric(ligne_fin)
     
            ligne_fin = InputBox("N'importe quoi! Il faut donner un numéro de ligne!!!")
     
            j = False
     
        Loop
     
     
     
        If ligne_fin <= ligne_début Then
     
            ligne_fin = InputBox("Qu'est ce que tu crois?? La ligne 0 n'existe pas!")
     
            j = False
     
        End If
    ' balaye toutes lignes du tableau "planning"
    For ligne = ligne_début To ligne_fin
        test = 0
        If Cells(ligne, 3) <> vehicule Or Cells(ligne, 5) = 0 Then
        ref = Cells(ligne, 4)
        For lig_source = 7 To 400
            If Sheets(vehicule).Cells(lig_source, 2) = "" Then
            enmoins = Int(Cells(ligne, 7) * (1 - Sheets(vehicule).Cells(4, 2)))
            If ref = Sheets(vehicule).Cells(lig_source, 1) _
                 And Sheets(vehicule).Cells(lig_source, 18) >= enmoins _
            Then GoSub enleve_ligne
    End If
     
    Next
    End If
    Next
     
     
    End Sub
     
    Sub enleve_ligne()
    '============
    Sheets(vehicule).Cells(lig_source, 18) = Sheets(vehicule).Cells(lig_source, 18) - enmoins
     
    Cells(ligne, 5) = ""
    Cells(ligne, 4) = ""
    Cells(ligne, 7) = ""
    Cells(ligne, 8) = ""
    Cells(ligne, 9) = ""
     
    ' enleve des pièces si un mat à été ajouté
    If Cells(ligne, 10) = "1 MAT +" _
    Then Cells(ligne, 6) = Cells(ligne, 6) - 1: _
         Cells(ligne, 10) = ""
    ' enlever Macro
    ' Macro enregistrée le 11/07/2007 par lahcen.boumdine
    '
     
    '
    End Sub

Discussions similaires

  1. [VB6] Exécuter une macro Access
    Par Nektanebos dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 22/02/2006, 17h32
  2. [VBA-E] Macro ouverture fichier déja ouvert
    Par bhaal76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 15h30
  3. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 13h15
  4. Qu'est-ce qu'une macro ?
    Par karli dans le forum Assembleur
    Réponses: 2
    Dernier message: 01/09/2002, 04h38
  5. Réponses: 2
    Dernier message: 22/07/2002, 13h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo