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 :

Macro pour modifier caractère de cellules [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut Macro pour modifier caractère de cellules
    a tous

    Voila j'ai un ficher Excel avec beaucoup de données qui sont saisie par une société autre que la notre et je ne sais pas pour quelle raison, ils n’ont pas saisi toutes les cellules au même format :

    J'ai une colonne avec des dates ; certaines sont saisie normalement : 01/01/2009 (ou 01/01/09) pas de problème mais dans certains cas, ils ont mis 01.01.09

    Je voudrais savoir si il y a une macro facile a faire et a mettre en place pour remplacer les caractères "." par des "/" et que se sou en format date (cette dernière n'est pas indispensable car facilement a faire sans macro)


    Merci de votre aide

  2. #2
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour FCL31 le forum regarde du cote de l instruction replace
    SALUTATIONS

  3. #3
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Je ne sais pas si ca va convenir a chaque fois (cela dépendra de la mise en forme
    celui marche pour les cellule du type 01.02.08 après suffit de modifier le like

    essaye quelque chose qui ressemble a ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim c As Range
    For Each c In Range("A1:Z200")
        If c.Value Like "##.##.##" Then
            c.Value = Replace(c.Value, ".", "/")
        End If
    Next
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  4. #4
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Merci Krovax sa a l'air de marcher sur le test que je vien de faire

    Je vais voir plus en détail

    Je marque mais si j'ai un probléme, je me permettrais de revenir vous voir

  5. #5
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re salut Krovax un autre exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Long
    For i = 2 To Range("a65536").End(xlUp).Row
    Cells(i, 1) = Replace(Cells(i, 1), ".", "/")
    Next i
    SALUTATIONS

  6. #6
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    j'enleve car enfait, je vien de m'appercevoir que j'ai un petit probleme avec ton code Krovax :

    Il marche bien sauf que j'ai
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
        Sheets("FRV").Select
        Columns("B:B").Select
        Application.Run "'02-2009.xls'!Macro1"
        Columns("B:B").Select
        Selection.NumberFormat = "m/d/yyyy"
        Range("C20").Select
        ActiveWindow.SmallScroll Down:=99
        Sheets("BBRV").Select
        Range("A:A,D:D,F:F").Select
        Range("F1").Activate
        Selection.Delete Shift:=xlToLeft
        Range("D10").Select
        Selection.AutoFilter
        Columns("H:H").Select
        Selection.Insert Shift:=xlToRight
        Columns("G:G").Select
        Selection.Copy
        Range("H1").Select
        Range("H4").Select
        Application.CutCopyMode = False
        ActiveWindow.FreezePanes = False
        Columns("G:G").Select
        Selection.Copy
        Range("H1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Columns("G:G").Select
        Application.CutCopyMode = False
        Selection.Delete Shift:=xlToLeft
        Columns("H:H").Select
        Selection.Delete Shift:=xlToLeft
        Columns("C:C").Select
        Selection.Delete Shift:=xlToLeft
        Columns("B:B").Select
        Range("A1:M46").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        Selection.NumberFormat = "m/d/yyyy"
        Range("C17").Select
        Application.Run "'02-2009.xls'!Macro1"
        Sheets("PVDF").Select
    qui se rajoute dans le code.

    Pourquoi

    Et enplus, sa me plante pour la réutiliser sur une autre feuille du classeur.

    Et je voi que ce code qui se rajoute, fait référance à d'autres colonnes dont je ne fait pas référence

  7. #7
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re, le forum le code que ta donne l ami Krovax est un exemple brute comme le mieux d ailleurs!! il faut adapter a tes besoins pour ta macro il faut simplifier tout ca. cela peut se resumer en quelques lignes .
    SALUTATIONS

  8. #8
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Le truc c'est que je voi pas en quoi je peu modifier le code de Krovax.
    Il me semble térs bien mais je ne comprend pas pourquoi une fois la macro executé, sa me rajoute des lignes de code dans la macro

    J'applique la macro sur ma colonne B donc j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim c As Range
    For Each c In Range("B1:B2000")
        If c.Value Like "##.##.##" Then
        c.Value = Replace(c.Value, ".", "/")
        End If
    Next
    Je ne comprend pas !!

  9. #9
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Heu il te rajoute vraiment tout ca?
    Tu n'avais pas l'enregistreur de macro de lancé par hasard?
    parce que a part ca je ne vois pas (je me suis amusé a le faire tourner plusieurs fois sans problème)

    Pour mon code on peu facilement optimiser la détection de la dernière ligne pour éviter de traiter les cellule vide

    Après pour ce qui est de gagner des lignes je n'ai jamais été très bon, j'ai même tendance à en rajouté vu que j'ai pas de problème de temps de traitement mais que le code risque d'être relu et modifier par des personne qui ne seront pas forcément super calé en vba ou qui n'auront pas trop le temps de s e plonger dedans du coup je fais tout pour être facilement lisible
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  10. #10
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Citation Envoyé par Krovax Voir le message
    Heu il te rajoute vraiment tout ca?
    Oui

    Citation Envoyé par Krovax Voir le message
    Tu n'avais pas l'enregistreur de macro de lancé par hasard?
    C'est quoi et où ???

  11. #11
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Ce tuto page 12
    C'est le petit truc qui pêrmet de transformé en macro toutes les actions que tu fais (très utile pour connaitre certaine syntaxe mais génère un code très lourd et lent)

    A mon avis tu as fait outil macro nouvelle macro et ca a lancé l'enregistreur .
    La prochaine fois essaye de copier directement le code dans l'éditeur, Alt+F11 pour l'ouvrir. C'est mieux.

    Efface le code en trop et tu verras tout ira comme sur des roulettes
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  12. #12
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    J'ai refait la macro et sa marche

    Je sais pas pourquoi sa a fait sa ??

    Surement j'avait l'enregistreur de macro de lancé

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

Discussions similaires

  1. macro pour selectionner la premiere cellule vide de mon tableau
    Par trickzer dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 09/01/2018, 21h38
  2. [XL-2003] macro pour modifier une cellule déverouillée par mot de passe
    Par jayroom dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 23/04/2012, 11h39
  3. Macro pour coller série de cellules dans liste
    Par Phyvon61 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/01/2009, 19h26
  4. Macro pour changer automatiquement certaines cellules?
    Par Zantetsu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/01/2009, 19h54
  5. [HTML] Macro pour modifier plusieur fichier html
    Par naouah dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 16/01/2009, 09h40

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