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 :

Probleme activation VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut Probleme activation VBA
    Bonjour à tous

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(Range("B2"), 7) = "3661384" Then Range("a2").Value = Range("A2").Value - 1
    La ca sélectionne la cellule B2, mais je désirerais que cela ce fasse sur la cellule qui est active et que la macro s'exécute automatiquement, car a chaque fois je suis obligé d' exécuter la macro.

    Merci par avance pour votre patience

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Il faut peut-être préciser la plage pour laquelle tu veux que la macro soit active, sinon, il va faire cela pour chaque cellule de la feuille, et il faut au moins déterminer que tu es au moins en colonne B, puisque tu tentes de modifier la cellule à gauche de celle qui est modifiée.

    Si j'ai bien compris l'énoncé , tu souhaites décrémenter la cellule à gauche d'une cellule dans laquelle on saisit 3661384

    Voici un code qui fait cela, pour une cellule de B1:B10. A toi d'adapter la plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range)
        On Error GoTo Fin
     
        If Not Intersect(Target, Range("B1:B10")) Is Nothing And Target.Cells.Count = 1 Then
            If Target.Value = 3661384 Then
                Application.EnableEvents = False
                Target(1, 0).Value = Target(1, 0).Value - 1
            End If
        End If
     
    Fin:
        Application.EnableEvents = True
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    ta question reste vague, une proposition à la devinette
    sur changement d'une cellule de la colonne B, la cellule de la colonne A est décrémenté de 1 si la cellule B="3661384*"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Or Intersect(Target, Columns("B:B")) Is Nothing Then Exit Sub
    If Left(Target, 7) = "3661384" Then Target.Offset(0, -1).Value = Target.Offset(0, -1).Value - 1
    End Sub
    Edit, Désolé pas rafraichi

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut
    Bonsoir et merci pour les réponses

    J'ai du mal m'exprimer, ce que je cherche c'est quand je scanne avec une douchette code barre que dans la cellule B2 le code commence par " 3661384 ", alors cellule A2 -1 par exemple, j'ai fait ça comme code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Macro1()
    If Left(Range("B2"), 7) = "3661384" Then Range("a2").Value = Range("a2").Value - 1 
    End Sub
    ca fonctionne, mais je dois activer la macro à chaque fois et cela active une autre cellule , logique, si je scanne toujours dans la colonne B un autre code " 1234567" et bien -1 dans A4 par exemple

    Merci pour votre bon vouloir, car je ne suis pas tres doué en VBA

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    la logique des codes cités ci haut:

    si la valeur d'une cellule se trouvant sur la colonne B change, alors, la cellule juste à côté de la colonne A est décrémentée de 1 (si la nouvelle valeur de B commence par 3661384)

    les codes sont écrits dans l'évènement de la feuille Worksheet_Change

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Merci pour votre bon vouloir, car je ne suis pas tres doué en VBA
    Heu, avec une pointe d'ironie amicale, crois-le bien, mais on est vendredi soir...

    Je trouve que tu n'es pas très doué pour expliquer ce que tu souhaites réaliser...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut
    merci
    J'ai juste modifie car je veux que se soit dans une cellule fixe A2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Or Intersect(Target, Columns("B:B")) Is Nothing Then Exit Sub
    If Left(Target, 7) = "3661384" Then range("a2").Value = range("a2").Value - 1
    End Sub

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

Discussions similaires

  1. [XL-2003] probleme activé VBA
    Par Roman76 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/05/2013, 10h22
  2. [VBA-E]Probleme macro VBA excel 2000 2003
    Par skichatchat dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/04/2007, 21h16
  3. Probleme Langage VBA
    Par nassu dans le forum Access
    Réponses: 21
    Dernier message: 20/05/2006, 09h53
  4. Probleme code vba
    Par alex38 dans le forum Access
    Réponses: 6
    Dernier message: 18/04/2006, 12h10
  5. probleme code vba ne s'execute pas apres instruction sql
    Par arnogef dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 29/12/2005, 12h34

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