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 :

conserver le format texte d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    technicien
    Inscrit en
    Avril 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Avril 2021
    Messages : 7
    Points : 7
    Points
    7
    Par défaut conserver le format texte d'une cellule
    Bonjour
    Je n'ai pas trouvé de question identique sur le forum, c'est pourquoi je me décide à poser cette question.

    J'effectue une macro qui va sépare les données des cellules de la colonne LifeCodeDue (AR), cellule au format texte, en plusieurs cellules dans les colonnes AS:AU. Mon problème c'est que lorsque Excel trouve un texte du style 17-05-2021, quand il le déplace, il le transforme au format date :17/05/2021 mais c'est pas toujours le cas.
    voila le résultat

    AR AS AT AU
    Lifecodedue due1 due2 due3
    01-03-2022 01/03/2022
    02-11-2022 02/11/2022
    600:00EH,06-10-2021 600:00EH 06/10/2021
    12-03-2024,2400LD 12-03-2024 2400LD
    06-05-2025 06-05-2025
    600:00EH,06-10-2021,100OPC 600:00EH 06-10-2021 100OPC

    Macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("AR2:AR9999").Select
        Application.CutCopyMode = False
        Selection.TextToColumns Destination:=Range("AS2"), DataType:=xlDelimited _
            , TextQualifier:=xlNone, ConsecutiveDelimiter:=True, Tab:=True, _
            Semicolon:=False, Comma:=True, Space:=True, Other:=False, FieldInfo:= _
            Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
    J'aimerai que les valeurs dans les colonnes AS,AT, AU reste identique a celle de la colonne LifeCodeDue(AR) soit en texte et ne pas se transformer en date.

    PS: j'ai déjà essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Columns("AS:AU").Select
        Selection.NumberFormat = "@"
    ça ne change rien et comme je suis débutant en VBA je me tourne vers vous

    merci pour vos lumières sur mon problème

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Points : 602
    Points
    602
    Par défaut
    Salut,

    Alors, tu peux baliser ton code avec les outils dans la barre au dessus du message (symbole #).

    Je pense qu'il faut que tu précise l’environnement de travail, je vois que tu ne fais pas référence aux feuilles avant les range, peut être que quand tu sélectionne les colonnes ça prends celles d'une autre feuille.

    Essaye de mettre les codename des feuilles avant tes ranges pour préciser.

    En suite pour changer le format il est inutile de sélectionner les cellules, tu peux directement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Columns("AS:AU").NumberFormat = "@"
    Ici feuil1 est le codename de la feuille1.

    Si tu veux afficher les dates dans une format avec tirets tu peux balayer la zone de copie détecter si la cellule est au format date et changer son format.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim myrange As Range
    Set myrange = Feuil1.Range("AS1:AU10")
     
    For Each cell In myrange
    If IsDate(cell) = True Then
     cell.NumberFormat = "dd-mm-yyy"
    End If
    Next cell
     
    End Sub
    ici j'ai pris la zone AS1:AU10 de la feuille 1.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par buzzwfr Voir le message
    Bonjour,

    A tester :

    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
     
    Option Explicit
     
    Sub Test()
     
    Dim AireAR As Range
    Dim Sh As Worksheet
    Dim I As Long
    Dim Tableau As Variant
     
        Set Sh = ActiveSheet
     
        With Sh
                Set AireAR = .Range(.Cells(2, "AR"), .Cells(.Cells(.Rows.Count, "AR").End(xlUp).Row, "AR"))
     
                For I = 1 To AireAR.Count
                    Tableau = Split(AireAR(I), ",")
                    Select Case UBound(Tableau)
                           Case 0
                             AireAR(I).Offset(0, 1) = "'" & Tableau(0)
                           Case 1
                             AireAR(I).Offset(0, 1) = "'" & Tableau(0)
                             AireAR(I).Offset(0, 2) = "'" & Tableau(1)
                           Case 2
                             AireAR(I).Offset(0, 1) = "'" & Tableau(0)
                             AireAR(I).Offset(0, 2) = "'" & Tableau(1)
                             AireAR(I).Offset(0, 3) = "'" & Tableau(2)
                     End Select
                Next I
        End With
     
        Set Sh = Nothing
        Set AireAR = Nothing
     
    End Sub

  4. #4
    Futur Membre du Club
    Homme Profil pro
    technicien
    Inscrit en
    Avril 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Avril 2021
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par ChristianBosch Voir le message
    Salut,

    Alors, tu peux baliser ton code avec les outils dans la barre au dessus du message (symbole #).

    Je pense qu'il faut que tu précise l’environnement de travail, je vois que tu ne fais pas référence aux feuilles avant les range, peut être que quand tu sélectionne les colonnes ça prends celles d'une autre feuille.

    Essaye de mettre les codename des feuilles avant tes ranges pour préciser.

    En suite pour changer le format il est inutile de sélectionner les cellules, tu peux directement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Columns("AS:AU").NumberFormat = "@"
    Ici feuil1 est le codename de la feuille1.

    Si tu veux afficher les dates dans une format avec tirets tu peux balayer la zone de copie détecter si la cellule est au format date et changer son format.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim myrange As Range
    Set myrange = Feuil1.Range("AS1:AU10")
     
    For Each cell In myrange
    If IsDate(cell) = True Then
     cell.NumberFormat = "dd-mm-yyy"
    End If
    Next cell
     
    End Sub
    ici j'ai pris la zone AS1:AU10 de la feuille 1.

    Merci pour ton code, mais ca fonctionne pas donnees.Range("AS1:AU9999") et du coup j'ai essayé le code de Eric KERGRESSE et lui ca fonctionne très bien, je te remercie tout de même du temps passé sur mon problème.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    technicien
    Inscrit en
    Avril 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Avril 2021
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses rapides, vous avez trouvez rapidement une réponse a mon problème qui a durée des jours.
    Eric KERGRESSE merci pour ton code il fonctionne super bien.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/08/2017, 22h01
  2. Conserver le format d'une cellule définie en variable (currency)
    Par 419 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/04/2016, 00h18
  3. conserver un format de cellule
    Par patmar83 dans le forum Excel
    Réponses: 1
    Dernier message: 26/09/2013, 20h45
  4. Adapter le format d'une cellule en texte
    Par francky74 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/04/2011, 16h37
  5. [VBA-E] cellule au format texte a la creation d'une feuille
    Par julio84 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2006, 18h36

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