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 :

Comment manipuler une chaine de caractère sur VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Alternant
    Inscrit en
    Octobre 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 64
    Par défaut Comment manipuler une chaine de caractère sur VBA
    Bonjour a tous

    Je travailles dans un fichier Excel issu d'une extration qui contient plusieurs lignes (environs 20000) et plusieurs colonnes (environs 20). mon problème
    concerne une colonne qui contient des dates (eg: 02/12/2016): je voudrais supprimer les lignes qui ont une date infèrieure au dernier jour du moi ( c'est à dire celles qui sont differentes du 31/.. ou 30/...), peu importe le mois ou l'année. Je voudrais le faire en utilisant un code sur VBA

    Quelle variable ou fonction puis-je utiliser sur VBA qui désigne le jour, dans la date de ma colonne?

  2. #2
    Expert éminent
    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
    Par défaut
    Bonjour !

    Y-a-t-il un rapport entre le titre de cette discussion et le problème exposé ?

    Car si ce sont des vraies dates, donc stockées numériquement en interne,
    utiliser soit la fonction de feuille de calculs JOUR (voir l'aide d'Excel) ou l'équivalente côté VBA Day.

    Si ce ne sont pas des dates mais du texte, voir du côté de la fonction VBA Split par exemple …
    Sans compter le tutoriel Manipuler les chaînes de caractères en VB6 et VBA Excel !

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    et les filtres alors il servent a quoi???
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  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
    Bonjour
    Ce qui veut dire :
    - pour chaque date :
    commencer par déterminer le dernier jour du mois de cette date. C'est tout simplement la veille du premier jour du mois suivant, ce qui se détermine très facilement à l'aide de DateSerial
    Question, donc, avant de parler de suppressions de lignes : sais-tu déterminer le dernier jour du mois d'une date spécifiée, à l'aide de DateSerial ?
    Si non : commence par cela.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    tiré de ma fonction nb_jours de ma contrib calendrier
    exemple sur la date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
     
        NB_JOURS = Day(DateSerial(Year(Date), Month(Date) + 1, 1) - 1)
    MsgBox NB_JOURS
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  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
    Ce qui s'écrit ainsi, Patricktoulon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateSerial(Year(d), Month(d) + 1, 0)
    où d est la date considérée.
    (Dateserial a certaines particularités ad-hoc).

  7. #7
    Membre confirmé
    Femme Profil pro
    Alternant
    Inscrit en
    Octobre 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 64
    Par défaut
    Merci pour vos réponses

    ce sont bien des dates en valeurs numérique qui sont stockées dans ma colonne. dans mon code je chercher a prendre en compte uniquement la date du 30 ou 31 rien d'autre

    En utilisant la fonction DateSerial: Function DateSerial(Year As Integer, Month As Integer, Day As Integer) As DateTime, je devrais obligatoirement la calculé dans

    ma feuille Excel? sinon, comme je peut faire appelle a la fonction (DateSerial), ou même à l'argument Day de ma fonction, dans une procédure afin de pouvoir appliquer la condition ci-dessous sur ma colonne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    i=i
    Do
    Range("I" & i).Select
    If Day <> 30 Or Day <> 31 Then
    Rows(i).Delete
    i = i
    Else
    i = i + 1
    End If
    Loop While (Sheets("Extraction").Range("A" & i) <> "")
    Excusez ma syntaxe douteuse. J'espère que mon problème est bien posé

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    remplace 1 par le numéro de ta colonne ou la lettre de ta colonne entre guillemet dans les address
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
    If Day(CDate(Cells(i, 1))) < 30 Then Cells(i, 1).EntireRow.Delete
    Next
    End Sub
    edit oupss c'est le contraire j'ai corrigé
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Et le .Value

Discussions similaires

  1. Comment manipuler une chaine de caractère
    Par belmehdi17 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/03/2008, 16h03
  2. Réponses: 9
    Dernier message: 19/12/2006, 12h02
  3. Comment découper une chaîne de caractères en VBA
    Par TomPad dans le forum Access
    Réponses: 3
    Dernier message: 23/06/2005, 09h58
  4. Réponses: 2
    Dernier message: 14/01/2005, 15h40
  5. comment vider une chaine de caractère
    Par gaut dans le forum C
    Réponses: 13
    Dernier message: 12/09/2003, 11h30

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