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 dans chaine de caractère


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut insertion dans chaine de caractère
    bonjour,

    je viens du récupérer un tableau excel avec des numéros de téléphone du type 240151232 je voudrais trouver une macro permettant d'inserer un zero en début de numéro puis des points tous les deux chiffres afin d'obtenir un numéro de type 02.40.15.12.32

    si qqu'un a une idée ou un exemple de code je serais bien content

    d'avance merci

    fabrice44

  2. #2
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells(NoLigne, NoCol).value = NoAjouté & Cells(NoLigne, NoCol).value
    Cells(NoLigne, NoCol).NumberFormat = "0#"".""##"".""##"".""##"".""##"
    Mais tu aurais intérêt à formter toute ta colonne en une seule fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(NoCol).NumberFormat = "0#"".""##"".""##"".""##"".""##"
    A+

    Edit
    Erreur sur Colums corrigée

  3. #3
    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
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,


    Les solutions ne manquent centes pas... et en utilisant des choses fort simples, telles une boucle for avec step 2 et la fonction Mid...

    Aujourd'hui, toutefois, j'ai envie de m'amuser et donc de considérer les choses autrement :

    Ainsi, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Command1_Click()
     toto = "240151232"
     toto = "0" & toto
     Dim titi() As Byte
     titi() = StrConv(toto, vbFromUnicode)
     resul = ""
      For i = 0 To UBound(titi) - 1 Step 2
        resul = resul & Chr(titi(i)) & Chr(titi(i + 1))
        If i < UBound(titi) - 1 Then resul = resul & "."
      Next
      MsgBox resul
    End Sub
    Je crois qu'il vaudra mieux que tu bûches et utilises plus simplement ce qui est plus simple (For...to.... et Mid)

    ou encore la solution de formatage suggérée par Ousk...

    Bon travail.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut re
    j'ai essayé ta ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub téléphone()
     
    Dim k As Integer
     
    k = 13
    Worksheets("Entreprises ABC").Colums(k).NumberFormat = "0#"".""##"".""##"".""##"".""##"
    End Sub
    celà ne fonctionne pas j'ai du zapper une étape

  5. #5
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    C'est le format pour la France, tu viens d'où ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut re
    ben vouis, j'suis sur nantes, mais ca n'empêche que ca marche pas !

  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
    Points : 15 546
    Points
    15 546
    Par défaut
    Quel est le format de départ ? As-tu déjà des points dans ta cellule ?

    Edit
    Si tu as des points, alors ça ne fonctionne pas sans les enlever avant de formater
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(NoLigne, NoCol).value = NoAjouté & replace(Cells(NoLigne, NoCol).value,".","")
    Vérifie que replace existe bien dans ta version
    A+

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut re
    non en fait les n° ont été rentrés comme ca " 240520606 " puis ils ont changé le format dans "format cellule" pour qu à la lecture dans le tableau on voit02.40.52.06.06, mais mois je veux récupérer ces données est les avoir en format initial avec les points

    est ce clair ?

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut re
    la réponse de l'ordi c'est : propriété ou méthode non géré par cet objet

  10. #10
    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
    Points : 5 537
    Points
    5 537
    Par défaut
    non en fait les n° ont été rentrés comme ca " 240520606 "
    sois précis : avec un espace devant et un espace derrière, comme tu le montres ici ?

    Car celà peut tout changer !!!

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut re
    sans espace ni devant ni derrière

  12. #12
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Alors il te reste la solution d'ucfoutu que j'écrierais ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
    Dim NoLu as string, Result as string, i as byte
    'où NoLu est le contenu de ta cellule
    NoLu = Right("0000000000" & "476407677", 10)
    For i = Len(NoLu) To 2 Step -2
        Result = Mid(NoLu, i - 1, 2) & "." & Result
    Next
    MsgBox NoLu & "  " & Left(Result, Len(Result) - 1)
    End Sub
    Tu dis
    A+

  13. #13
    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
    Points : 5 537
    Points
    5 537
    Par défaut
    Choses plus simples pour choses plu simples, alors (finie donc de rigoler... hélàs ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    toto = "240151232"
     toto = "0" & toto
     resul = ""
      For i = 1 To Len(toto) Step 2
        resul = resul & Mid(toto, i, 2)
        If i < Len(toto) - 2 Then resul = resul & "."
      Next
      MsgBox resul
    me parait suffisant (mais bien tristounet...)

  14. #14
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut re
    je suis un peu dans le gaz, il faut que je regarde vos propositions pour les comprendre un peu plus, il y a pas mal de chose que je ne connais pas NoLu et Right

    merci quand même, je vais essayer de bidouiller ca demain la nuit porte conseille

    a+

  15. #15
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    NoLu est une simple variable. J'ai bêtement utilisé une variable au lieu de prendre la donnée dans une cellule. Si tu remplace NoLu par Cells(NoLigne, NoColonne) c'est pareil mais c'est plus long pour te montrer un exemple
    Quant à right(.........) c'est pour formater ta donnée sur 10 caractères afin de pouvoir faire Step - 2 dans la boucle et commencer ton N° par un zéro.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NoLu = Right("0000000000" & Cells(NoLigne, NoColonne), 10)
    Regarde dans l'aide la signification de Right
    A+

  16. #16
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut re ouckelnor
    juste pour info

    la première ligne de code que tu m'as donné, elle ne fonctionnée pas parceque tu as écris colums et non columns, mais bon ca transforme bien les numéro vu à l'écran mais ça ne modifie pas leur écriture initiale

    je continue à étudier vos autres lignes pour comprendre !
    je ne lacherais pas l'affaire comme ca !

    allez a+

  17. #17
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut re ouckelnor
    en fait je n'arrive pas à remettre ca à demain
    j'ai un dépassement de capacité sur la ligne For i = Len(NoLu) To 2 Step -2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim k As Integer
     
    k = 3
     
     
    Dim NoLu As String, Result As String, i As Byte
    'où NoLu est le contenu de ta cellule
    NoLu = Right("0000000000" & Cells(k, 13), 10)
    For i = Len(NoLu) To 2 Step -2
        Result = Mid(NoLu, i - 1, 2) & "." & Result
    Next
    MsgBox NoLu & "  " & Left(Result, Len(Result) - 1)
     
    End Sub

  18. #18
    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
    Points : 15 546
    Points
    15 546
    Par défaut
    Déclare i as integer et là ça fonctionne (!?!)

  19. #19
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 30
    Points
    30
    Par défaut re ouckelnor
    ca y est! enfin ca marche, encore une affaire résolue grace à votre super site surper sympa
    le code pour la forme si ca interesse qqu'un
    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
    Sub téléphone()
     
    Dim k As Integer
     
    k = 3
     
     
    While Worksheets("Entreprises ABC").Cells(k, 13) <> ""
    toto = Cells(k, 13).Value
     toto = "0" & toto
    resul = ""
     For i = 1 To Len(toto) Step 2
      resul = resul & Mid(toto, i, 2)
      If i < Len(toto) - 2 Then resul = resul & "."
     Next
     Cells(k, 13) = resul
    k = k + 1
    Wend
     
    End Sub

    merci encore de votre aide, à la prochaine

  20. #20
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par fabrice44 Voir le message
    non en fait les n° ont été rentrés comme ca " 240520606 " puis ils ont changé le format dans "format cellule" pour qu à la lecture dans le tableau on voit02.40.52.06.06, mais mois je veux récupérer ces données est les avoir en format initial avec les points
    Il me semble qu'on va chercher très loin des choses bien simples...

    Avez-vous essayé
    ?

    Si vous voulez récupérer ce qu'Excel affiche dans une cellule, c'est la propriété text qu'il faut utiliser.

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

Discussions similaires

  1. [PowerShell] Insertion double quote dans chaine de caractère
    Par jck2003 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 22/03/2012, 14h12
  2. Extraction dans chaine de caractères variable
    Par ginkas31 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 20/08/2007, 17h27
  3. insertion de chaine de caractére
    Par elie42 dans le forum Requêtes
    Réponses: 4
    Dernier message: 18/07/2007, 17h06
  4. Recherche de texte dans chaine de caractère
    Par Requin15 dans le forum Oracle
    Réponses: 13
    Dernier message: 14/09/2006, 12h10
  5. Réponses: 18
    Dernier message: 27/06/2006, 18h37

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