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 :

Convertir le contenu d'une colonne et le déplacer vers d'autres colonnes [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Coordonnatrice
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Coordonnatrice
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Convertir le contenu d'une colonne et le déplacer vers d'autres colonnes
    Bonjour,
    Je chercher sur le site une solution à mon problème, mais je ne trouve pas, alors je me tourne une fois de plus vers vous!!

    Je veux créer une macro pour simplifier la mise en page d'une document que l'on a à faire plusieurs fois par semaine. J'ai 2 questionnements...

    Premièrement, dans ma colonne G (7e) j'ai un date séparée par des (-) ex : 2014-12-06. Je veux séparer ce contenu pour avoir année-mois-jour dans des colonnes différentes : Soit colonne G=Année, colonne H = mois, colonne i = jour. J'ai DÉJÀ du contenu dans H et I, je dois donc insérer 2 colonnes avant de transposer mon texte. Par la suite, je veux modifier le format de ces 3 colonnes pour personnalisé en «00». Je suis un peu perdue ici!


    Deuxièmement, je veux Concatener, j'ai actuellement ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Ajouter le concatener de la matricule + année + mois + jour
        ActiveCell.FormulaR1C1 = "Concatener"
        Range("A6").Select
        ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[3],RC[6],RC[7],RC[8])"
    Je ne me rappelle plus du code à inscrire pour que la formule «descende» automatiquement jusqu'à la dernière ligne de mon tableau?

    Un gros merci de m'aider

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Premièrement, dans ma colonne G (7e) j'ai un date séparée par des (-) ex : 2014-12-06. Je veux séparer ce contenu pour avoir année-mois-jour dans des colonnes différentes : Soit colonne G=Année, colonne H = mois, colonne i = jour. J'ai DÉJÀ du contenu dans H et I, je dois donc insérer 2 colonnes avant de transposer mon texte. Par la suite, je veux modifier le format de ces 3 colonnes pour personnalisé en «00». Je suis un peu perdue ici!
    La date est un format. Par exemple, si tu souhaites avoir uniquement l'affichage du mois, il suffit de modifier le formatage de la cellule contenant la date en tapant mmmm dans le format personnalisé et ce pour les versions françaises de Windows
    Tu peux aussi bien entendu extraire le mois à l'aide de la fonction etc.

  3. #3
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut


    Bonjour,

    ou, comme parfois cela arrive dans le cas d'une colonne avec des vrais dates et du texte représentant une date,
    le plus simple est d'utiliser la fonction Split à partir de la propriété Text d'une cellule …

    Pour la dernière ligne du tableau il y a plusieurs possibilités selon sa structure,
    par exemple via la propriété End(xlDown) ou End(xlUp) selon la cellule de référence.
    Affecter ensuite la formule directement à l'intégralité de la plage comme dans cette discussion

    __________________________________________________________________________________________________
    Tous unis, tous Charlie

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Coordonnatrice
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Coordonnatrice
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci, je vais tester et valide le tout.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Coordonnatrice
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Coordonnatrice
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Essai erreur
    Bonjour,
    J'ai tenté de codifier le Split, mais visiblement, je passe à côté de quelque chose. Mes données restent dans la colonne 7 alors que je veux que les données se divisent (année = 7e colonne, mois = 8e colonne et jour = 9e colonne).

    Qu'est-ce que j'oublie?

    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
    'Suppression de la ligne 6
     
        Rows("6:6").Select
        Selection.Delete Shift:=xlUp
     
     
    ' Insertion de 2 colonnes à droite de la date
        Columns("H:I").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
     
     
    'Convertir la date pour enlever les tirets et attribuer AA-MM-JJ à chaque des colonnes
     
        DerniereLigne = Cells(65535, 7).End(xlUp).Row
        Dim ContenuInitial As String
        Dim a() As String
        For i = 1 To DerniereLigne
            ContenuInitial = Cells(i, 7).Value
            a() = Split(ContenuInitial, "-")
            For j = 0 To UBound(a)
                Cells(i, j + 1).Value = g(j)
            Next j
        Next i
     
     'Changer le format de ces colonnes de dates
     
        Columns("G:I").Select
        Selection.NumberFormat = "00"
     
    'Changer le titre des colonnes
        Range("G5").Select
        ActiveCell.FormulaR1C1 = "Année"
        Range("H5").Select
        ActiveCell.FormulaR1C1 = "Mois"
        Range("I5").Select
        ActiveCell.FormulaR1C1 = "Jour"
        Range("A5").Select
    Un gros merci

  6. #6
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    A la place de g(), je pense que tu veux utiliser a(). Deuxièmement, tu parle de colonnes G, H et I donc j ne peux commencer à 0 + 1 mais il doit être 0 + 7 de façon à commencer à écrire dans G et non dans A :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(i, j + 7).Value = a(j)
    Hervé.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Coordonnatrice
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Coordonnatrice
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci Theze c'Était exactement ça le problème! Wow, je viens de la tester et tout fonctionne, je suis vraiment ravie!

    Décidément, je ne vois pas clair! Je ne trouve tjrs pas comment faire descendre ma formule de concatener avec le end.XLdown... Je suis ultra-débutante, j'essaie d'apprendre par moi-même ...avec votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Ajouter le concatener de la matricule + année + mois + jour (colonnes 5+8+9+10)
        ActiveCell.FormulaR1C1 = "Concatener"
        Range("A6").Select
        ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[3],RC[6],RC[7],RC[8])"
        Range('A6').End(xlDown)

    ou ça? mais ça ne fonctionne pas plus...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     'Descendre jusqu'à la fin du tableau?
           DerniereLigneA = Cells(65535, 1).End(xlUp).Row
           Selection.AutoFill Destination:=Range("A6:DerniereLigneA")
           Range("A5").Select
    Un gros merci!

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut




    Il n'est pas forcément nécessaire de la faire descendre, il suffit d'affecter directement la formule à la plage de cellules !

    Un exemple dans cette discussion

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Coordonnatrice
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Coordonnatrice
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Je ne comprends pas ta référence Marc... Je comprends que tu préfères me faire trouver par moi-même au lieu de me donner la réponse toute faite. Ce n'est pas que je ne veux pas, mais je n'ai pas ton expertise pour lire les codes aussi facilement.

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut




    Reformulons : au lieu d'affecter la formule à une seule cellule,
    n'est-il pas préférable de l'affecter directement à l'intégralité de la plage concernée ?

    Sinon dans le lien il y a pourtant un post évoquant cette fonction End, sans oublier son aide VBA intégrée …

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

Discussions similaires

  1. Convertir le contenu d'une String en ligne de code
    Par DamS2502 dans le forum Langage
    Réponses: 5
    Dernier message: 29/04/2008, 07h40
  2. Réponses: 4
    Dernier message: 13/04/2007, 17h32
  3. convertir le contenu d'une cellule automatiquement sous excel
    Par boboz2 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/12/2006, 19h33
  4. Réponses: 1
    Dernier message: 28/09/2006, 16h21
  5. [FPDF] convertir le contenu d'une popup en pdf
    Par kagura dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 23/01/2006, 09h29

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