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 :

[VBA-E] Problème macro excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Dév FrontEnd
    Inscrit en
    Avril 2005
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Dév FrontEnd

    Informations forums :
    Inscription : Avril 2005
    Messages : 239
    Points : 114
    Points
    114
    Par défaut [VBA-E] Problème macro excel
    Bonjour,
    Je ne vous le caches pas, je suis débutant en excel et j'ai jamais fait de macros de ma vie.

    J'aimerais savoir s'il est possible de rajouter des caractères dans chaque case d'une colonne déterminée. Ces caractères étant les même pour toutes les cases et je veux les insérer au début du texte qui est dans chaque case.
    Alors est-ce possible ?
    Et si oui, comment ?

    Sinon, tant que j'y suis, est-ce également possible de pouvoir séparer une colonne en plusieurs ?
    Je m'explique, dans une colonne j'ai des nombres (style des numéros de téléphone) et je voudrais les séparer en plusieurs colonnes de la façon suivante : les 2 premiers chiffres restent dans la même colonne, par contre les 2 suivants vont dans la colonne d'après (cette colonne étant vide).
    Est-ce que c'est réalisable ?

    J'espère que j'ai été clair ...
    J'ai vraiment besoin de ça pour pouvoir importer les données de mes fichiers excel dans ma base de données.
    Merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Oui c'est possible...

    Remplir toutes les cellules de la colonne A de la ligne 2 a 10000 par "TEST"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sub ecritvaleurs()
    For each cel in Feuil1.Range ("A1:A10000").cells
       cel.value = "test"
    Next cel
    end sub
    Séparer une colonne en 2 A vers B 2 premiers caract
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Separe ()
    For Each cel In Feuil1.Range("A1:A10000").Cells
       If Not (cel.Value = "") Then
       cel.Offset(0, 1) = Mid(cel.Value, 3, Len(cel.Value) - 2)
       cel.Value = Left(cel.Value, 2)
       End If
    Next cel
    end sub
    Je te laisse chercher un peu pour le reste ok
    Dans excel tape Alt+F11 et tu tombera dans un evironnement qui te permettra d'inscrire du code copie ces fonctions dans le code de la feuil1 et met tes valeurs dans la feuil1 et teste...

    Bonne chance

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    hello,


    je veux les insérer au début du texte qui est dans chaque case
    je pense que c'est plutot ca que tu cherches (reprend le code de vesta) et modifie ca :

    par ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cel.value = "test" & cel.value
    apres pour ton N° de telephone, tout est collé? (0321 ...) ou separé par des . ou des espace (01 10 ...) ?

  4. #4
    Membre régulier
    Profil pro
    Dév FrontEnd
    Inscrit en
    Avril 2005
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Dév FrontEnd

    Informations forums :
    Inscription : Avril 2005
    Messages : 239
    Points : 114
    Points
    114
    Par défaut
    Merci Elstak,
    Tu as raison, c'est plutôt cela que je cherchais ...
    Je viens de tester ce que m'avait répondu Vesta mais ça ne faisait pas ce que je désirais, c'est-à-dire ajouter du texte (en l'occurence des chiffres) au texte déjà présent dans chaque cellule.

    Je vais donc essayer ce que tu m'as dit Elstak et puis j'essayerai la réponse 2 de Vesta.

    Merci à tous les 2 pour le moment ...

  5. #5
    Membre régulier
    Profil pro
    Dév FrontEnd
    Inscrit en
    Avril 2005
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Dév FrontEnd

    Informations forums :
    Inscription : Avril 2005
    Messages : 239
    Points : 114
    Points
    114
    Par défaut
    Bon voilà, j'ai testé !

    Merci Elstak pour ta réponse à ma question 1 et Vesta pour ta réponse à ma question 2.

    Restez dans les parages, je risque d'avoir d'autre(s) question(s) ...

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Ok no prob résolu alors?

  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
    J'ai une question : pourquoi veux-tu séparer les différents éléments de ton N° de téléphone ?

    Tu dis

    A+

  8. #8
    Membre régulier
    Profil pro
    Dév FrontEnd
    Inscrit en
    Avril 2005
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Dév FrontEnd

    Informations forums :
    Inscription : Avril 2005
    Messages : 239
    Points : 114
    Points
    114
    Par défaut
    C'était un exemple pour le numéro de téléphone.
    En fais j'ai un autre colonne qu'il faut que je sépare en 2 car elle contient le numéro de commande qui est composé de la date et du numéro de la commande dans la journée (ex : 1705200608 pour la 8e commande du 17/05/2006)

  9. #9
    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
    Ok. Tu n'as plus de pb ? Alors

  10. #10
    Membre régulier
    Profil pro
    Dév FrontEnd
    Inscrit en
    Avril 2005
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Dév FrontEnd

    Informations forums :
    Inscription : Avril 2005
    Messages : 239
    Points : 114
    Points
    114
    Par défaut
    Je n'aVAIS plus de problèmes !

    Maintenant, j'ai encore une question ... (comme c'était prévisible, et prévu !)

    Dans une colonne, j'ai le type de paiement : chq, cb ou prel
    J'aimerais changé cette colonne pour mettre à la place Chèque, Carte Bleue ou Prélévement ...

  11. #11
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Il faudrai quand meme que tu comprenne bien ce que tu fais alors je vais te l'expliquer en détails

    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 RenommeCol ()
    'Ici j'ai pri de A1 a A1000 Mais fo mettre la bonne colonne
    'Donc on parcoure toutes les cellules de la range
     
    For Each cel In Feuil1.Range("A1:A10000").Cells
       'Nouveau pour toi peu etre cette fonction
       'Ca remplace 3 if ici ou on mettrait chaque fois le meme chose
       'Donc en fct de ce que contien la cellule on fait ci ou ca
     
       Select case cel.value
            ' Condition Case valeur : action a faire
            Case "chq: cel.value = "Cheque"
            Case "prel": cel.value = "Prélèvement"
            Case "cb": cel.value = "Carte Banquaire"
            'Case Else si ce n"est aucun des trois
            'Case Else: Debug.print "Parametre inconnu trouvé : " & cel.value 
       End Select
     
    Next cel
    end sub
    Allé Hop Résolu lol

  12. #12
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Si tu veux encore mieu, voila tu peux dire quelle colonne tu veux parcourir a la recherche de tes valeurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReplaceValuesInColumn ("C")
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReplaceValuesInColumn (3)
    Ca fonctionnne aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub ReplaceValuesInColumn (ColumnName As Variant)
     
    For Each cel In Feuil1.Columns(ColumnName).Cells
       Select case cel.value
            Case "chq": cel.value = "Cheque"
            Case "prel": cel.value = "Prélèvement"
            Case "cb": cel.value = "Carte Banquaire"
       End Select
    Next cel
     
    End Sub

  13. #13
    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
    Oui, c'est mieux... Je trouvais ta méthode
    For Each cel In Feuil1.Range("A1:A10000").Cells
    un peu bourrin mais bon...
    Par contre ton Select case m'a assis par terre. Comme quoi les idées sont à prendre partout.
    L'inconvénient de la méthode est que tu visites 65535 lignes là ou un find ne "visiterait" que les cellules concernées... Par contre, find serait à relancer pour chaque mot à remplacer... Je garde l'idée. Tout serait parfait si tu déterminais la dernière ligne renseignée.

    A+

  14. #14
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Oui, mais bon c'etait un exemple lol... Ca évitait de parcourir toute la colonne

  15. #15
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    ouskel'n'or je vais encore te mettre sur le cul alors MDR

    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
    Sub ReplaceValuesInColumn(ColumnName As Variant)
    Dim GotoLine As Integer
     
     
    GotoLine = Feuil1.Cells(1, Feuil1.Columns(ColumnName).Column).CurrentRegion.Rows.Count
     
     
    i = 0
    For Each cel In Feuil1.Columns(ColumnName).Cells
       i = i + 1
       Select Case cel.Value
            Case "chq": cel.Value = "Cheque"
            Case "prel": cel.Value = "Prélèvement"
            Case "cb": cel.Value = "Carte Banquaire"
       End Select
       If i > GotoLine Then Exit For
    Next cel
     
    End Sub

  16. #16
    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
    Je viens de tester ton code, Vesta... Désolé mais il ne fonctionne pas chez moi. (VB97 ???)
    Je l'ai modifié en retenant l'idée du select case
    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
     
    Sub ReplaceValuesInColumn()
    'Si A est la colonne visée
    DernièreLigne = Range("A65535").End(xlUp).Row
        For Each Cel In Feuil1.Range(Cells(1, 1).Address, Cells(DernièreLigne, 1).Address).Cells
           Select Case Cells(Cel.Row, 1).Value
                Case "chq"
                      Cells(Cel.Row, 1).Value = "Cheque"
                Case "prel"
                      Cells(Cel.Row, 1).Value = "Prélèvement"
                Case "cb"
                      Cells(Cel.Row, 1).Value = "Carte Banquaire"
           End Select
        Next Cel
    End Sub
    Une précaution à prendre si des majuscules se sont glissées par inadvertance dans les chq, Prel ou Cb : Utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
           Select Case lcase(Cells(Cel.Row, 1).Value)
    A+

    Edit : J'ai supprimé le case else qui fais un msgbox pour chaque ligne ne contenant pas l'une des données cherchées

  17. #17
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    ca marche mais faut préciser la colonne hein on est d'acord j'ai Exel 2003

    ReplaceValuesInColumn(ColumnName As Variant)

    donc

    ReplaceValuesInColumn(1)


    Mais c vrai que le xlupp c bon aussi hein...

  18. #18
    Membre régulier
    Profil pro
    Dév FrontEnd
    Inscrit en
    Avril 2005
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Dév FrontEnd

    Informations forums :
    Inscription : Avril 2005
    Messages : 239
    Points : 114
    Points
    114
    Par défaut
    J'ai encore une autre question mais qui me paraît ne pas avoir de réponse !

    J'ai deux fichiers, avec dans chacun, au départ, nom et prénom dans la même colonne.
    Dans le premier fichier, j'ai scinder cette colonne en 2 pour avoir nom et prénom séparément.
    Je suis en train de faire pareil dans le second. Mais le problème, c'est que les noms n'ont pas été saisis tous de la même manière (enfin avec la même casse, les mêmes tirets, etc ...)
    Le problème, c'est que j'ai des infos importantes dans chaque fichier et j'aimerais les regrouper en un seul ...

    Vous avez une idée de comment je pourrais faire ?

  19. #19
    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 nombre de lignes, tes fichiers ?

    A+

  20. #20
    Membre régulier
    Profil pro
    Dév FrontEnd
    Inscrit en
    Avril 2005
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Dév FrontEnd

    Informations forums :
    Inscription : Avril 2005
    Messages : 239
    Points : 114
    Points
    114
    Par défaut
    Un peu plus de 2000 ....

Discussions similaires

  1. [XL-2002] problème macro excel pour rechercher valeur dans un intervalle
    Par lanomade04 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/05/2011, 16h59
  2. Problème macro excel sous vmware
    Par Bastuccio dans le forum VMware
    Réponses: 1
    Dernier message: 31/12/2009, 13h32
  3. Appeler une dll ou un autre module vba depuis une macro excel vba
    Par technobiz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2008, 14h24
  4. [VBA-E] Problème fermeture excel
    Par robin des bulles dans le forum Access
    Réponses: 3
    Dernier message: 28/06/2006, 16h14
  5. [VBA-E]Problème entre Excel et Word
    Par Ritter dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/02/2006, 19h03

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