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 :

Automatiser une macro par element declencheur [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2020
    Messages : 14
    Par défaut Automatiser une macro par element declencheur
    Bonjour à toutes et à tous,

    J'ai réussi à créer une macro qui me permet de convertir mes données via conversion et matcher les valeurs sur les bonnes lignes.
    Cependant, j'aimerais automatiser ma macro sans devoir passer par visual basic , et pour cela j'aimerais que ma macro se déclenche au moment où on colle les données sur la cellule A1

    Voici ma macro :
    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
    'vu que le test 1 a échoué, on cherche à l'aide d'une boucle For de transéférer les valeurs de la colonne A feuille -1 dans les lignes correspondantes dans la colonne A feuille actuelle
    Function Previous(ByRef pLigne As Variant) As Variant 'pLigne fait référence au ligne de la feuille précédente
        Dim comm As Variant, ligne As Variant, i As Integer, var As Variant, trouver As Boolean, InRange As Range, Arg As Range
        comm = ActiveSheet.Previous.Cells(Rows.Count, 1).End(xlUp).Row
        For ligne = 2 To comm
            'MsgBox (ligne)
                For i = ActiveSheet.Previous.Index + 1 To Worksheets.Count
                'MsgBox (i)
                    trouver = False
                    If ActiveSheet.Cells(pLigne, i).Value = ActiveSheet.Previous.Cells(ligne, i).Value Then
                        Previous = ActiveSheet.Previous.Cells(ligne, 1).Value
                    Else
                        Exit For
                    End If
                Next i
        Next ligne
    End Function
     
    Sub CONVERTIR_DONNE_BRUTES_transfertCOMMENTAIRES()
    '
    ' on converti les données pour aligner les valeurs
     
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
            Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
            ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
            (20, 1), Array(21, 1)), TrailingMinusNumbers:=True
     
            Columns(1).Clear
     
     
     
    Dim comm As Variant, ligne As Variant, bln As Boolean, isheet As Variant, x As Variant
    Dim newcomm As Variant, newligne As Variant, newbln As Boolean, newisheet As Variant
     
     
    comm = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
     
    For ligne = 2 To comm
        If IsEmpty(Cells(ligne, 1)) Then
     
        'For isheet = ActiveSheet.Index + 1 To Worksheets.Count
            bln = False
            ActiveSheet.Cells(ligne, 1).Value = Previous(ligne)
            'MsgBox (ligne)
        End If
    Next ligne
     
    End Sub
    '30/02 la  macro permet de "scanner" chaque ligne et à chaque ligne on appel
    ' à la fonction, qui, va récupérer toutes les valeurs de la feuille précédente
    'elle est censé comparer les valeurs entres elles et voir si elles ont
    'les mêmes valeurs, si la valeur est la même, alors les données de la colonne A
    'sont transmises dans les lignes correspondantes
     
    'Je n'arrive pas à appeler une fonction dans la macro , et c'est la fonction citée plus haut
     
    '28/04 la macro appelle enfin la fonction, les valeurs de la colonne A feuille 1 match avec les valeurs des lignes correspondantes !
    'il reste à modifier quelques lignes pour l'appliquer au véritable tableau des suspens de l'entreprise , et automatiser la macro en passant par un private sub !
    Cordialement,

    Marc

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Tu pourrais essayer cela :

    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.Address = Me.Range("A1").Address Then
            'Appeller la macro
        End If
    End Sub
    Note qu'un effet secondaire désagréable de l'exécution du VBA est qu'il empêche d'utiliser l'annulation.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2020
    Messages : 14
    Par défaut
    Cela fonctionne, la macro a été appelée et action déclenchée.

    Je te remercie, et je te souhaite un bon week-end,

    Marc.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Lancer une macro par XLSTART
    Par BBe8127 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/12/2009, 13h43
  2. Insérer une macro par le code
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 4
    Dernier message: 29/02/2008, 17h04
  3. Démarrage d'une macro par Enter ou par Tabulation
    Par Le POlonais dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/12/2007, 08h46
  4. Réponses: 22
    Dernier message: 29/08/2006, 16h29
  5. Démarrage d'une macro par SQL Server
    Par PiercingDegree dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/09/2005, 09h13

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