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 :

Sélectionner une cellule contenant une date au format différent


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut Sélectionner une cellule contenant une date au format différent
    Bonjour,

    La première feuille contient une cellule contenant une date au format "jj-mm-aa", je souhaiterai sélectionner la même date dans la deuxième feuille qui contient une plage cellules contenant des dates au format "jjj jj".

    Pour ce faire je sélectionne et modifie le format de cette plage de cellules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.NumberFormat = "m/d/yyyy"
    Et ensuite je rétabli le format de celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.NumberFormat = "ddd dd"
    Existe-t-il une meilleure solution ?

    Merci d’avance pour votre aide et réponse.

    Modus57

  2. #2
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    si tu ne fais que sélectionner, je ne vois pas pourquoi il y a besoin de modifier le format.

    Il doit se passer autre chose entre tes deux Selection.NumberFormat qui doit nécessiter ou semble nécessiter de changer le format...

    Accessoirement le vba devrait rarement contenir des select et des selection. .

    Donc : dis nous en plus sur ce que tu veux faire avec cette date et qui ne marche pas si tu ne fais pas ces changements de format.

    Cordialement.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    Bonjour, bonne heureuse année,

    Je me suis mal exprimé voilà ma solution :

    Le clic sur un bouton dans la Feuil1 recherche la date de la première cellule visible de la colonne 1 du tableau filtré et la sélectionne dans la Feuil2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Valeur_Cherchee As Date, MoisRecherche As String
     
        Valeur_Cherchee = Range("Formulaire").SpecialCells(xlCellTypeVisible).Cells(1, 1).Value 'Première cellule visible de la colonne 1 tableau filtré
        MoisRecherche = MonthName(Month(Valeur_Cherchee))
     
        Application.Goto Reference:=MoisRecherche
        Selection.NumberFormat = "m/d/yyyy"
        Selection.Find(what:=CDate(Valeur_Cherchee), After:=ActiveCell, LookIn:=xlValues).Activate
        ActiveCell.Interior.Color = 52879367
        Selection.NumberFormat = "ddd dd"
    Y en a-t-il d’autre ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    Bonjour,

    Un début d'année sans la moindre réponse.

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur_Cherchee = Range("Formulaire")...
    Il vaudrait mieux préciser le classeur et la feuille sur lesquels tu travailles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur_Cherchee = ThisWorkBook.Worksheets(....).Range("Formulaire")...
    Pour ce qui est de ta recherche en elle-même, je ne comprends pas trop. Le format d'affichage d'une date n'a pas d'importance, si tu recherches le 3 Juillet 1990, peu importe le formatage que tu mets en place dans ta cellule, 3/7/1990, 03/07/90,.. ça reste la même date, tu ne devrais pas avoir à modifier quoi que ce soit pour la chercher. A moins que Find recherche une chaine et non une date.
    Dans ce cas, utilises plutôt Format() pour modifier la date que tu recherches avec find et lui donner le format "jj-jjjj"

    Plus globalement, il n'est pas utile de sélectionner une cellule ou un onglet pour modifier ou rechercher quelques choses dessus.
    Plutôt que de faire un goto, utilise ta référence pour pointer la cellule ou l'onglet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim Valeur_Cherchee as Date
    Dim NextCell as Range
     
    Valeur_Cherchee  = ThisWorkBook.Worksheet("Feuil1").Range("Formulaire") '.....
     
    With ThisWorkBook.Worksheet("Feuil2").Range("Reference")
       Set NextCell = .Find(Valeur_Cherchee ,After:=.cells(1,1), LookIn:=xlValues) 'Essai comme ça avec la variable typée Date
       Set NextCell = .Find(Format(Valeur_Cherchee,"jj-jjjj") ,After:=.cells(1,1), LookIn:=xlValues) 'Sinon comme ça
       NextCell.Interior.Color = 52879367 
    End With
    Je n'ai pas testé le code, c'est un code de principe.

    [Edit]
    Bon ça m'intriguais, j'ai fait quelques essais.
    alors il faut utiliser xlFormulas et non xlValues... Sinon, en effet Find cherche dans ce qui est affiché et ne tient pas compte de la donnée brute.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Find(Valeur_Cherchee ,.cells(1,1), xlFormulas, xlWhole)
    [/Edit]
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    Bonjour Qwazerty,

    J'ai testé votre code :

    Nom : Capture d’écran 2023-01-09 092309.jpg
Affichages : 198
Taille : 65,6 Ko

    Range("Formulaire") est un tableau structuré

    Ça bug

    Nom : Capture d’écran 2023-01-09 092455.jpg
Affichages : 181
Taille : 16,7 Ko

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/12/2022, 21h03
  2. [Tableur] Calc > Macro > Cibler une cellule contenant la date du jour.
    Par Clemaverick dans le forum Bureautique
    Réponses: 0
    Dernier message: 31/01/2021, 14h49
  3. Réponses: 1
    Dernier message: 08/07/2017, 14h35
  4. Réponses: 3
    Dernier message: 15/10/2014, 09h53
  5. Réponses: 1
    Dernier message: 24/03/2010, 11h49

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