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 :

Changer_en_date Macro VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Par défaut Changer_en_date Macro VBA
    Bonjour à la comunauté,
    Je suis confronté à un petit souci.
    J'ai une colonne de date. Mais cette dernière est sous forme de nombre.
    Par exemple j'ai 20120102 qui est en réalité 02/01/2012.
    Pour l'instant j'ai réussi à construire une macro qui fasse le changement en date. la macro est la suivante
    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 changer_en_date()
        Dim year As String
        Dim day As String
        Dim month As String
     
        'Macro pour changer les colonnes "Movement Day": N2 et AM2 . A Optimiser pour que l'utilisateur n'est pas à bidouller dans la macro
     
        Worksheets("Feuil1").Range("D2").Activate
     
        While (ActiveCell <> "")
            year = Left(ActiveCell, 4) 'ici je récupère l'année
            month = Left(Right(ActiveCell, 4), 2) 'ici je récupère le mois
            day = Right(Right(ActiveCell, 4), 2) 'ici je récupère le jour
     
            ActiveCell = (month & "/" & day & "/" & year)
            ActiveCell.Offset(1, 0).Activate
        Wend
    End Sub
    La difficulté est de mettre la correspondance en date dans une autre colonne.
    Comme ça je pourrais garder les deux écritures de dates.

    Merci de m'aider

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,

    Si j'ai bien compris ton besoin, il te suffit d'écrire le résultat dans une autre colonne au lieu de la colonne qui contient l'originale.
    Avec Offset, c'est facile, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveCell = (month & "/" & day & "/" & year)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.offset(0,1) = (month & "/" & day & "/" & year)
    Tu auras le résultat dans la colonne E

    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Par défaut
    Merci pour votre réponse.
    mais si je voulais avoir la réponse dans une autre colonne autre que E, comment faire sans avoir à compter toutes les colonnes qui le séparent de D.

    Merci pour votre réponse.

    je dis une autre colonne ça peut-être AC ou tiens plus loin CC.
    En fait j'ai un classeur contenant plusieurs colonnes, la colonne E étant déjà occupée par d'autres données,je n'aimerais pas les effacer.

    Merci pour votre aide

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    tu peux te faire une fonction personnalisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function dateNum(dat1 As String) As Date
        dateNum = CDate(Right(dat1, 2) & "/" & Mid(dat1, 5, 2) & "/" & Left(dat1, 4))
    End Function
    à mettre dans un module standard

    Ensuite, dans n'importe quelle cellule : =dateNum(A2)


    eric

  5. #5
    Membre confirmé
    Homme Profil pro
    Lille
    Inscrit en
    Juin 2013
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lille
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 127
    Par défaut
    Merci Eric ça l'air de fonctionner nickel

  6. #6
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,

    Pour une autre colonne que E, tu peux trouver la dernière colonne utilisée sur base de la première ligne du tableau (2 j'imagine si tu commence de D2)

    On récupère le numéro de la dernière colonne utilisée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerCol=Sheets("Feuil1").cells(2,rows(2).cells.count).end(xltoleft).column
    Si tu veux écrire à droite de la dernière c'est +1 mais comme on commence en D2 il faut soustraire 4 car on est déjà en 4ème colonne, donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.offset(0,Dercol-4+1) = (month & "/" & day & "/" & year)

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

Discussions similaires

  1. Probleme d'enregistrement sur Macro/VBA de Excel
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/11/2005, 17h23
  2. Connaître la taille d'un module avec une macro VBA ou autre
    Par beegees dans le forum Général VBA
    Réponses: 15
    Dernier message: 22/11/2005, 09h47
  3. probleme de selection aleatoire sur excel avec macro vba
    Par guillaume sors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2005, 10h51
  4. Macro VBA sur Access
    Par beurnoir dans le forum Access
    Réponses: 3
    Dernier message: 12/10/2005, 16h46
  5. [SQL][MACRO VBA]Pb de syntaxe
    Par Stef.proxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/08/2004, 09h11

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