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 :

série d'actions automatique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 92
    Par défaut série d'actions automatique
    Bonjour,

    pour un fichier de tracking, j'aurais besoin d'une commande pour exécuter automatiquement une série d'action.

    Concrètement, j'ai un code barre que je scanne avec une douchette dans une cellule, mais je bosse sur un système anglais, et donc le "1" c'est une "&", le "2" un "é" etc. car la douchette ne fonctionne qu'avec un qwerty. Ne pouvant décemment pas bosser en QWERTY, je voudrais qu'une fois scanné, les caractères soient remplacés automatiquement, pour passer de "CD)àçà&)ààé_" à "CD-0901-0028" sans appuyer sur un bouton.

    voilà mon code actuel, le pbl c qu'il plante à chaque utilisation et ça tourne en boucle :

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
            If Target.Address = "$C$5" Then
                Cells(5, 3) = Replace(Cells(5, 3), "&", "1")
                Cells(5, 3) = Replace(Cells(5, 3), "é", "2")
                Cells(5, 3) = Replace(Cells(5, 3), """", "3")
                Cells(5, 3) = Replace(Cells(5, 3), "'", "4")
                Cells(5, 3) = Replace(Cells(5, 3), "(", "5")
                Cells(5, 3) = Replace(Cells(5, 3), "-", "6")
                Cells(5, 3) = Replace(Cells(5, 3), "è", "7")
                Cells(5, 3) = Replace(Cells(5, 3), "_", "8")
                Cells(5, 3) = Replace(Cells(5, 3), "ç", "9")
                Cells(5, 3) = Replace(Cells(5, 3), "à", "0")
                Cells(5, 3) = Replace(Cells(5, 3), ")", "-")
            End If
    End Sub
    Merci d'avance,
    Phil....

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    C'est normal que cela plante, en effet tu demandes le changement de la valeur en C5, du coup lorsque tu changes celle-ci tu relances l'événement Change.

    Essayes un code de ce type

    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)
     
            If Target.Address = "$C$5" Then
                Select Case Target.Value
                    Case "&"
                        Cells(5, 3) = Replace(Cells(5, 3), "&", "1")
     
                    Case "é"
                        Cells(5, 3) = Replace(Cells(5, 3), "é", "2")
                    Case Else
                End Select
            End If
    End Sub
    Je te laisse tester et faire la suite, je l'ai tapé à la main, sans test.

    Philippe

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 92
    Par défaut
    et bien j'ai tout tapé, mais rien ne change en fait.... à part que ça plante plus, mais les caractères restent inchangés....

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Pourtant chez moi, le bout de code que je t'ai donné marche, je viens de tester sur Excel 2002 et Excel 2007.

    Philippe

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    cela tient au fait que ta cellule n'est pas = lecaractère mais contient le caractère...
    Tu pourrais utiliser Like ou Instr, pour vérifier, mais .....inutilement long. Tu ferais aussi bien de remplacer sans même t'en préoccuper, ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     If Target.Address = "$C$5" Then
               lescars = Array("é", """", "'", "(", "-", "è", "_", "ç", "à", ")")
               mescars = Array("2", "3", "4", "5", "6", "7", "8", "9", "0", "-")
               for i = 0 to ubound(lescars)
                    Cells(5, 3) = Replace(Cells(5, 3), lescars(i), mescars(i))
               next 
           End If
    ceci étant dit, j'ai quelques inquiétudes car tu remplaces "-" par "6" et que tu remplaces ")" par "-".
    Pour peu que tu rencontres d'abord un ")", il sera remplacé par "-", puis, donc, par "6" !!!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 92
    Par défaut
    C'est un peu ce que j'avais fait, avec une boucle, mais oui, le pbl c la triplette ") - 6" qui risque de faire chier, mais les - sont tjs à la mm place, donc limite, ça se règle facilement....

    Mais le pbl, c que ça tourne tjs en boucle.

    Et avec le code de Philippe, rien ne se passe. J'ai rajouté tous les caractères pourtant, g testé avec la douchette, à la main, et aucun des caractères ne change....

  7. #7
    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
    Citation Envoyé par ucfoutu Voir le message
    ...
    ceci étant dit, j'ai quelques inquiétudes car tu remplaces "-" par "6" et que tu remplaces ")" par "-".
    Pour peu que tu rencontres d'abord un ")", il sera remplacé par "-", puis, donc, par "6" !!!
    Est-ce que tu n'évites justement pas ce problème puisque, avec les arrays tels que tu les as écris, on rencontrera "-" avant de rencontrer ")"...

    Me trompé-je?
    "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...
    ---------------

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 92
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    avec les arrays tels que tu les as écris, on rencontrera "-" avant de rencontrer ")"...
    Dans l'absolu, le pbl n'en est pas vraiment un puisque en effet, les caractères sont changés dans l'ordre, et donc chacun est remplacé par le bon, y compris le ) qui devient un -.... le pbl, c qu'une fois à la fin du code, ça tourne en boucle et le nouveau - devient 6 au 2e passage.... et le code ne termine pas....

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Est-ce que tu n'évites justement pas ce problème puisque, avec les arrays tels que tu les as écris, on rencontrera "-" avant de rencontrer ")"...

    Me trompé-je?
    tu as raison (donc pas de problème dans cet ordre là)
    Il est toutefois nécessaire, alors, de ne pas risquer un "double-lancement" car sinon "badaboum". La chose est à mon sens évitable avec une simple variable booléenne static pour éviter la répétition du traitement.

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

Discussions similaires

  1. Action automatique sur serveur MySQL
    Par nintendoplayer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 14/11/2007, 18h49
  2. [Dates] déclenchement d'une action automatique
    Par philsand77 dans le forum Langage
    Réponses: 2
    Dernier message: 27/05/2007, 22h37
  3. Action automatique sur click d'un bouton de formulaire
    Par ned-flanders dans le forum Langage
    Réponses: 7
    Dernier message: 20/03/2007, 17h37
  4. [Tests] Un freeware pour les actions automatique
    Par layouni dans le forum Windows
    Réponses: 1
    Dernier message: 06/09/2006, 18h23
  5. Comment désactiver les actions automatiques de Windows ?
    Par j-phi dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 06/01/2005, 13h53

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