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 :

Utiliser la suite de caractère d'une cellule par rapport à une date (année en cours) en VBA [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut Utiliser la suite de caractère d'une cellule par rapport à une date (année en cours) en VBA
    Bonjour à tous,

    J'ai un soucis dans mon code dont voici un extrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Sheets("DEVIS").Select
        Columns("A:B").Select
        Range("B7").Activate
        Selection.EntireColumn.Hidden = False
        Range("B1").Select
        Selection.End(xlDown).Offset(1, 0).Select
        Selection.End(xlDown).Offset(1, 0).Select
        ActiveCell.FormulaR1C1 = "=CONCATENATE(YEAR(TODAY()),""-ADN-"",RC[-1])"
    Ma formule sort comme vous le voyez l'année en cours, je voudrai que (si celle-ci change un jour [le 31 Décembre quoi !]) je sois averti, mais je n'arrive pas à trouver le moyen de le convertir en VBA...

    En gros ça fera en formule excel =SI(ANNEE(AUJOURDHUI())>STXT(B2;1;4);"Message";"Tu fais la modif du tableau").

    J'ai tenté des choses avec un petit If / Then / Else mais je n'arrive pas à tout à trouver le moyen de faire ça

    Merci d'avance de votre aide !

    PS : pour des raisons de confidentialité, je ne peux pas mettre mon fichier à disposition et une très faible partie de mon code...

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Bonjour

    par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub essai2()
     
    datejour = Range("B1").Value
    datejoursuivant = datejour + 1
    annee = Year(datejour)
    anneesuivante = Year(datejoursuivant)
    If anneesuivante > annee Then
    MsgBox "Tu fais la modif du tableau"
     
    End If
    End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut
    Bonjour a_diard,

    Merci pour ta réponse, je sens que je suis sur le point de réussir ce que je veux. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Dim der_code_devis As String
        Range("B1").Select
        Selection.End(xlDown).Offset(1, 0).Select
        Selection.End(xlDown).Offset(1, 0).Select
        dern_code_devis = ActiveCell.Value
     
        Dim annee As Integer
        annee = Left(dern_code_devis, 4)
        annee_en_cours = Year(today)
     
        If annee < annee_en_cours Then
        MsgBox "TEST", vbOKOnly + vbInformation, "TEST"
        Else
    Apparemment il y aurait un problème sur cette ligne : annee = Left(dern_code_devis, 4) => je veux récupérer les 4 premiers caractères pour n'avoir que l'année qui est contenue au début du code de mon dernier devis

    Vous avez une idée ?

  4. #4
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dern_code_devis = ActiveCell.Text
    De plus, remplacer Today par Date pour la date du jour...

    Attention à tes déclarations de variables, der_code_devis <> dern_code_devis

  5. #5
    Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut
    Bonjour pijaku et merci de ta réponse,

    J'ai repris mon code ce matin et j'ai repris le problème dans l'autre sens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim annee_devis As Integer
        Dim annee_en_cours As Integer
        annee_devis = Left(Range("B1000").End(xlUp).Value, 4)
        annee_en_cours = Year(Date)
     
        If annee_devis = annee_en_cours Then
    Et visiblement là ça fonctionne Merci pour le Date à la place de today sans quoi j'aurai cherché un moment

    Bonne journée à tous !

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

Discussions similaires

  1. [ASIQ] Comment tester par rapport à une date avec l'heure
    Par Soulkeum dans le forum Adaptive Server IQ
    Réponses: 1
    Dernier message: 08/02/2008, 18h06
  2. Réponses: 2
    Dernier message: 21/03/2007, 16h06
  3. Réponses: 7
    Dernier message: 31/07/2006, 13h50
  4. Réponses: 7
    Dernier message: 05/04/2006, 11h22
  5. [MySQL] Select count par rapport à une date
    Par ruty dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 02/04/2006, 22h17

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