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 :

Insertion espace vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    homme à tout faire
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : homme à tout faire
    Secteur : Transports

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Par défaut Insertion espace vba
    Bonjour à vous

    Je me tourne une fois de plus vers vous pour éclairé ma lanterne.
    J'ai bricolé un bout de code pour faire une mise en forme automatique.
    En colonne B, je tape différent texte au format A1234567890 ou N123456123456, d'autres format aussi, mais ceux la ne sont pas si fréquent donc pas la peine d'automatisé, le format voulu est A 123 456 78 90 ou N 123456 123456

    Ca marche bien en colonne B mais pourquoi dans les autre colonne si je fait un collage ont m'envoie en débogage avec erreur d’exécution 13??

    Merci d'avance pour votre aide

    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.Column = 2 And Len(Target) = 11 Then
     
        Target = Left(Target, 1) & " " & Mid(Target, 2, 3) & " " & Mid(Target, 5, 3) & " " & Mid(Target, 8, 2) & " " & Mid(Target, 10, 2) & " "
     
    Else
     
       If Target.Column = 2 And Len(Target) <> 13 Then Exit Sub
     
       Target = Left(Target, 1) & " " & Mid(Target, 2, 6) & " " & Mid(Target, 7, 6) & " "
    End If
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour,
    Que VEUt DIRE exactement :
    Ca marche bien en colonne B mais pourquoi dans les autre colonne si je fait un collage
    ?
    Qu'entends-tu par "collage" ?
    J'espère que tu n'as pas ajouté carrément une seconde procédure évènementielle WorkSheet_change ! (ce serait totalement insensé ...)
    Explique donc

  3. #3
    Membre du Club
    Homme Profil pro
    homme à tout faire
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : homme à tout faire
    Secteur : Transports

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Par défaut
    Merci de te penché sur la question

    Si je colle quoi que ce soit dans le tableau en copier coller.
    Si je tape une autre donné par exemple 123 en dehors de la colonne b le résultat sera 1
    voir pièce jointe
    Fichiers attachés Fichiers attachés

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target=format("N123456123456","@ @@@@@@ @@@@@@")

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Regarde en plus la logique de ce que tu as écrit (lis les commentaires que j'y ai ajoutés)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Column = 2 And Len(Target) = 11 Then '--->> donc si à la fois en colonne 2 avec une donnée de 11 caractères
     
           Target = Left(Target, 1) & " " & Mid(Target, 2, 3) & " " & Mid(Target, 5, 3) & " " & Mid(Target, 8, 2) & " " & Mid(Target, 10, 2) & " "
     
       Else '---> sinon (si donc pas A LA FOIS en colonne 2 et une donnée de 11 caractères) 
     
           If Target.Column = 2 And Len(Target) <> 13 Then Exit Sub '--->> si A LA FOIS en colonne 2 avec une donnée de longueur différente de 13 catactères -->> tu sors
                                                                                         ' --->> jamais vrai si autre colonne --->> et tu ne sors donc pas !
     
          Target = Left(Target, 1) & " " & Mid(Target, 2, 6) & " " & Mid(Target, 7, 6) & " " --->> ben ma foi --->> quelle que soit l'autre colonne et le nombre de caractères, tu n'es pas dans le cas 2 et n'es donc pas sorti -->> et cela s'exécutera donc !
      End If
    End Sub
    Je ne veux pas t'aider plus tant que tu n'auras pas su au moins corriger cette fausse logique (avant même de parler code) !

  6. #6
    Membre du Club
    Homme Profil pro
    homme à tout faire
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : homme à tout faire
    Secteur : Transports

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Par défaut
    Merci de bien vouloir m’aide à comprendre

    c mieux comme ça

    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.Column = 2 And Len(Target) = 11 Then
     
           Target = Left(Target, 1) & " " & Mid(Target, 2, 3) & " " & Mid(Target, 5, 3) & " " & Mid(Target, 8, 2) & " " & Mid(Target, 10, 2) & " "
     
       Else 
     
           If Target.Column <> 2 or Len(Target) <> 13 Then Exit Sub 
                                                                                         
          Target = Left(Target, 1) & " " & Mid(Target, 2, 6) & " " & Mid(Target, 7, 6) & " "
      End If
    End Sub

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    c mieux comme ça
    Change "mieux" par "désespérant".
    Tu as là une carence fondamentale de LOGIQUE (avec ou sans code... C'est la logique elle-même, qui est ici infirme !!!) !
    Réfléchis encore

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Allez --->>
    Ecris-moi cela (les actions à conduire) en langage naturel (sans le moindre code, donc ... juste par des phrases si ... alors ... sinon ...
    Et ce ne sera donc là QUE de la logique, hein ... aucun code !

  9. #9
    Membre du Club
    Homme Profil pro
    homme à tout faire
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : homme à tout faire
    Secteur : Transports

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Par défaut
    Bon ont en rediscutera apres le réveillon..
    Joyeuse fête à vous tous

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    je t'ai fait un depart
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim X$
        Application.EnableEvents = False
        If Target.Column = 2 Then
            X = Target.Text
            Select Case Len(Target)
            Case 11: 'Target.Value = Format(X, "......")
            Case 13: Target.Value = Format(X, "@ @@@@@@ @@@@@@")
                'Case xx:Target.Value = Format(X, "......")
                'Case yy: Target.Value = Format(X, "......")
            End Select
        End If
        Application.EnableEvents = True
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Patrick
    Je ne crois pas que tu lui aies là rendu un vrai service. Il avait besoin d'organiser sa pensée, avant même d'écrire le code ...

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour jacques

    je sais pas la methode n'est pas absolue
    je lui ai montré une parmi tant d'autres en espérant qu'il est l'intelligence d'annalyser
    nous verrons bien
    en ce qui te concerne tu donne trop de reponse enigmatique (pour un bleu)
    perso je commence a te connaitre ( tout du moins la subtilité) mais c'est pas le cas de tout le monde
    bon reveillon
    perso n'ayant plus les broches je vais pouvoir rattraper un peu le temps perdu ces dernieres années ca va glisser a fond et tant pis si je me casse une jambe

    parti pour quelques jours
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    en ce qui te concerne tu donne trop de reponse enigmatique (pour un bleu)
    Bleu ou pas, informatique ou pas ...
    J'essayais, par une intervention pourtant claire, de le forcer à organiser sa seule pensée.
    Je lui demandais donc d'écrire ses actions en langage naturel (pas en code). Car là est sa faiblesse : raisonner ... seulement raisonner ... avec ou sans code !
    "enigmatique" ? -->> tu plaisantes ? Je me suis même efforcé de lui montrer (en vain) les failles de logique, une par une ...
    Je ne doute pas qu'il viendra dire : "j'ai tout compris" ... J'en vois beaucoup (beaucoup trop) dans ce cas, que l'on retrouve ici-même, mois après mois, année après année, qui "ont tout compris" mais reviennent toujours avec des questions vraiment élémentaires, voire à peine différentes de celles où ils disaient avoir "tout compris" d'un code qu'ils s'étaient manifestement contentés de copier/coller.
    Je ne saurais encourager de telles "démarches". Je me sentirais même assez condamnable de le faire (et ce : pour mille et une raisons fondamentales).

    Et aucun pouce rouge ne me déviera jamais de ce chemin-là


    Problème : ce n'était pas son code (celui du traitement des chaînes) qui était faux ! Même lourd, il fonctionnait, mais uniquement ce qu'il écrivait pour dire quand traiter et quand ne pas traiter ... et cela était PRINCIPALEMENT DE LA LOGIQUE PURE, SANS CODE.
    S'il ne met pas trois grammes de logique dans ce qu'il fait, s'il n'en prend pas la rigoureuse habitude (et cela ne s'apprend pas), il aura par la suite beau acquérir les connaissances les plus avancées en VBA, ces connaissances ne lui permettront pas de mettre en oeuvre des mécanismes qui nécessitent principalement l'application d'une logique (informatique ou pas) quelquefois de surcroît élémentaire.
    Passe de bonnes fêtes

  14. #14
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    A bouh ça chauffe
    J'insiste sur ce que je t'ai dit deux fois plus haut.
    Si (et seulement si) tu fais cet effort de réflexion nécessaire et me le montres par un exposé, en langage naturel, des actions logiques à conduire, je prendrai alors la peine de t'exposer pourquoi le code que te suggère Patrick est très maladroit et à éviter, tel quel. Et te guiderai à éviter ce genre de piège à ... (devine) ...
    A toi de voir, donc ...
    J'attends ...


    EDIT : Patrick aurait gagné à réfléchir lui également plus posément et plus complètement. (pressé de partir "glisser" ?)

    A/aux "courageux" qui a/ont distribué sans le motiver son/leur "pouce rouge", maintenant : il vous sera alors possible de rougir aussi anonymement que votre clic sur ce pouce ...

Discussions similaires

  1. prob insert into vba
    Par croke dans le forum VBA Access
    Réponses: 6
    Dernier message: 19/02/2012, 16h54
  2. INSERT INTO vba
    Par isabelle b dans le forum VBA Access
    Réponses: 21
    Dernier message: 26/06/2008, 21h12
  3. requète INSERT Access VBA
    Par yannick9 dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/07/2007, 14h21
  4. Insert SQL + VBA
    Par Hydex dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/05/2007, 22h22
  5. pb insert en VBA
    Par louisju dans le forum Access
    Réponses: 5
    Dernier message: 15/02/2006, 19h06

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