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 une date format texte en format date sur une plage avec des cellules vides [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2017
    Messages : 22
    Par défaut Convertir une date format texte en format date sur une plage avec des cellules vides
    Bonjour à tous,

    J'ai un petit soucis avec ma macro. Je voudrais lui faire dire,
    Commence sur la cellule non vide et tu remontes jusque F2 et pour toute les cellules non vide tu appliques la conversion.

    Comme elle est écrite, elle s'arrête à la première cellule vide et je ne vois pas comment faire

    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
    Sub Compilation()
     
    Dim i As Variant
    Dim j As Variant
     
    ' boucle pour transformer en format date
    j = 2
    Do While j <> fin And j < 13
      Sheets("A").Cells(j, 6) = CDate(Sheets("A").Cells(j, 6))
        i = i + 1
        With Sheets("A").Cells(j, 6)
       .Value = CDate(.Value)
       .NumberFormat = "dd/mm/yyyy"
    End With
         j = j + 1
    Loop
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Où et comment as-tu déclaré et initialisé ta variable fin ?
    Tu dis que tu "remontes remontes jusque F2" mais ton code parcours vers le bas et non vers le haut. Sois clair.
    A quoi te sert la variable i ?
    Tu dis "pour toute les cellules non vide tu appliques la conversion" mais je ne vois aucune expression conditionnelle

    Pourquoi ne pas tout simplement :
    - dresser la plage des cellules non vides de la colonne F à partir de la ligne 2
    - appliquer une boucle for each à ces cellules (avec tes instructions de remplacement)

  3. #3
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2017
    Messages : 22
    Par défaut
    Bonjour Unparia,

    Comme je le dis, mon instruction est simple, et je voudrais lui faire faire une chose de que j'arrive pas à écrire

    Voilà dans quoi je veux l'insérer mais je n'y arrive pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       DernLig = Range("C" & Rows.Count).End(xlUp).Row
     
    For Each MaCellule In Range("F2:F" & DernLig)
        If MaCellule.Text = NotEmpty Then ?????
        Next MaCellule
    Ce n'est pas faux aussi dysorthographie

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MaCellule.Text = NotEmpty
    !!!!
    s'écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not macellule.text = ""
    Et ... Then quoi ? -->> si tu sais ce que signifie le code que tu as montré dans ton premier message, je ne comprends pas que tu te poses cette question maintenant !
    Le même code est à appliquer à la cellule Macellule (en boucle).
    Moi, je sors, maintenant.

  5. #5
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2017
    Messages : 22
    Par défaut
    Avec ces 2 macros, je ne sais pas comment en faire une

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Te rends-tu au moins compte de ce que tu es en train de me dire que tu sais ce que faisais en boucle sur la cellule j,6 ce que tu avais écrit, à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Sheets("A").Cells(j, 6)
    .Value = CDate(.Value)
    .NumberFormat = "dd/mm/yyyy"
    End With
    mais que tu ne vois pas comment l'appliquer à Macellule en boucle ?
    Je te laisse, car là .. vraiment ...

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Personnellement celles vide ou pas,en descendant en remontent quel importance?

    J'appliquerai le format à toute la plage et appliquerais plage.value=plage.value

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Range("F2:F" & DernLig)
        .NumberFormat = "dd/mm/yyyy"
        .Value = .Value
    End With

  9. #9
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2017
    Messages : 22
    Par défaut
    Bonjour Dysortho

    La macro qui m'a donné génère des erreurs. Tout ce ne converti pas correctement

    Qd, je fais la conversion manuellement, pas de soucis
    Données - Convertir - je laisse coché Délimité, Tabulation et dans identificateur de texte : aucun

    J'enregistre cet manipulation avec l'enregistreur de macro et là aussi cela ne fonctionne pas correctement

    Merci d'avance

  10. #10
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Avec NumberFormat = "General" ou NumberFormat = "", ca fonctionne avec CDate.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    j = 2
    Do While j <> fin And j < 13
    Sheets("A").Cells(j, 6).Select
     
    Sheets("A").Cells(j, 6).NumberFormat = ""
    Sheets("A").Cells(j, 6) = CDate(Sheets("A").Cells(j, 6))
     
    j = j + 1
    Loop

  11. #11
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2017
    Messages : 22
    Par défaut
    Merci Docmarti,

    Mais avec cette macro je fais comment STP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Range("F2:F" & DernLig)
        .NumberFormat = "dd/mm/yyyy"
        .Value = .Value
    End With

  12. #12
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Mets les valeurs dans la variable tableau T puis, si les valeurs contiennent des dates. utilise .FormulaLocal au lieu de .Value.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Range("F2:F" & DernLig)
     t = .Value
    .NumberFormat = ""
    .FormulaLocal = t
    End With

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

Discussions similaires

  1. [XL-2007] Compter le nombre de modalités d'une colonne avec des cellules vides
    Par sophie_2525 dans le forum Excel
    Réponses: 14
    Dernier message: 10/01/2017, 11h16
  2. [MVVM] Binding xaml sur une List/ObserveableCollection du Model plutôt que sur une propriété du Model
    Par uluquiorra dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 21/11/2012, 18h43
  3. Convertir une date format texte en format date
    Par arni63 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 19/03/2012, 15h34
  4. Réponses: 3
    Dernier message: 22/09/2009, 21h34
  5. [Requête]Convertir une chaine de texte en format date
    Par emjie dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/04/2007, 00h44

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