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 :

Formule Vba pour zone de texte [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Points : 68
    Points
    68
    Par défaut Formule Vba pour zone de texte
    Bonjour le forum,

    Je viens requérir votre aide afin de remplir une zone de texte (pas une TextBox, mais une zone de texte par insertion "zone de texte").
    Dans cette zone je souhaite avoir la date du jour et l'heure sous cette forme :

    Aujourd'hui nous sommes le : jeudi 22 décembre 2022
    et il est exactement : 17:51:20

    L'heure doit se mettre à jour à la manière d'un chronomètre.

    Je vous joint un petit fichier exemple. C'est peut-être la fatigue, mais je peine à trouver la solution en Vba.
    Merci par avance pour votre aide

    EssaiZoneTexte.xlsm

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 459
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 459
    Points : 16 335
    Points
    16 335
    Par défaut
    Bonjour

    Il faut écrire la formule dans une cellule, éventuellement masquée par la zone de texte, sélectionner la zone de texte et utiliser =cellule dans la barre de formule, cellule étant l'adresse de la cellule contenant la formule
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 242
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 242
    Points : 1 822
    Points
    1 822
    Par défaut
    Salut,

    Une textbox est un objet Shape, une vilaine bestiole d'après ce que j'ai pu lire à droite et à gauche (pas de moyen simple pour mettre le texte à jour).

    J'ai trouvé quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Sh As Excel.Shape
    Set Sh = Feuil1.Shapes("TextBox 1")
     
    Dim Chrs As Excel.Characters
    Set Chrs = Sh.TextFrame.Characters()
     
    Chrs.Text = "some text"

  4. #4
    Membre du Club Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Bonjour

    Il faut écrire la formule dans une cellule, éventuellement masquée par la zone de texte, sélectionner la zone de texte et utiliser =cellule dans la barre de formule, cellule étant l'adresse de la cellule contenant la formule
    Bonjour,
    Il me semble que c'est ce que j'ai fait dans mon fichier joint.
    Merci toutefois pour ta participation

  5. #5
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 459
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 459
    Points : 16 335
    Points
    16 335
    Par défaut
    RE

    Je n'ouvre pas toujours les fichiers...

    Une unique formule suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CONCAT("Aujourd'hui nous somme le ";TEXTE(AUJOURDHUI();"jjjj jj mmmm aaaa");" ";CAR(10);" et il est exactement ";(TEXTE(MAINTENANT();"hh:mm:ss")))
    Cependant que ce soit en formule ou VBA cela nécessite un timer pour raffaichir et en général cela sature plus ou moins le fonctionnement d'Excel
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  6. #6
    Membre du Club Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Merci pour votre réponse, je vais essayer dans mon projet.

    Par contre je bute sur une autre formule.

    "I19" = si(cellule active dans la plage (D8:J13) est égale à une cellule de Fériés[Date] alors "JOUR FERIE" sinon "JOUR NORMAL".

    Féries[Date] étant une zone nommée d'un tableau structuré.

    Peux-tu m'aider s'il te plaît ? Mon cerveau marche au ralenti en ce moment...
    Je t'en remercie par avance

  7. #7
    Membre du Club Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    J'ai réussi à faire ce code mais le résultat en H19 est toujours "JOUR NORMAL".
    Le format cellule dans D3:J13 est Date "jj"
    et celui des cellules G4:G16 est Date "jj/mm/aaaa"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim Cel as Range
    For Each Cel In Worksheets("Calend").Range("D8:J13")
            If Not IsError(Application.Match(Cel.Value, Worksheets("Données").Range("G4:G16"), 0)) Then
                [H19].Value = "JOUR FERIE"
            Else
                [H19].Value = "JOUR NORMAL"
            End If
        Next Cel
    Merci par avance pour votre aide

  8. #8
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 459
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 459
    Points : 16 335
    Points
    16 335
    Par défaut
    Re

    En formule on utilise généralement NB.SI(Plage_JF;Date)>0
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  9. #9
    Membre du Club Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    J'ai tenté cette approche sans plus de succès
    Merci, je continue à chercher avec mon code Vba

  10. #10
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 459
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 459
    Points : 16 335
    Points
    16 335
    Par défaut
    RE
    Images attachées Images attachées  
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  11. #11
    Membre du Club Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Re,

    Dans ton exemple, la formule s'applique à une seule cellule (sauf erreur de ma part), dans mon cas, la formule doit s'appliquer à une plage de cellule (D8:J13) et la réponse dans une seule cellule H19.
    A moins d'avoir mal compris... ce qui ne serait pas étonnant.

  12. #12
    Membre du Club Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Avec l'aide d'internet voici la solution sous Vba
    Code à mettre dans WorkSheet_SelectionChange()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim Cel As Range
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("D8:J13")) Is Nothing Then
        If Not IsError(Application.Match(CLng(Target), Worksheets("Données").Range("G5:G16"), 0)) Then
            [H19].Value = "JOUR FERIE"
        Else
            [H19].Value = "JOUR NORMAL"
        End If
    End If
    Bonnes fêtes de fin d'année à tous.
    Encore merci pour toutes les réponses apportées.

  13. #13
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 459
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 459
    Points : 16 335
    Points
    16 335
    Par défaut
    RE

    Si tu testes n dates et écrases ,à chaque date testée dans la boucle, H19 quel intérêt ?
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  14. #14
    Membre du Club Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par 78chris Voir le message
    RE

    Si tu testes n dates et écrases ,à chaque date testée dans la boucle, H19 quel intérêt ?
    Je ne comprends pas ce que tu veux dire...

  15. #15
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 459
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 459
    Points : 16 335
    Points
    16 335
    Par défaut
    RE

    J'étais resté sur la boucle du #7

    Le dernier code n'a pas de boucle mais on n'en voit pas le contexte...

    Il fonctionne aussi sur une seule cellule alors que c'est ce que tu reprochais à la formule.

    De toute façon sans contexte et dans la mesure où ne t'intéresse que VBA, c'est un dialogue de sourds...

    Bon Noël
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  16. #16
    Membre du Club Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Bonjour le forum, bonjour 78chris,

    Je travaille sur un calendrier.
    Chaque jour est sous le format jj. Lorsque l'utilisateur clique sur un jour du mois, il lui est indiqué qu'il a cliqué sur tel jour au format jjjj jj mmmm aaaa.
    Tout cela fonctionne très bien. Donc en plus de la couleur de la cellule qui change, il lui est indiqué si ce jour est férié ou pas.
    Je dois travailler sur la plage de cellule du calendrier (RgCalendrier) qui va chercher la date cliquée dans une autre plage (Fériés), si il y a correspondance, alors "JOUR FERIE".
    Joyeux Noël également en espérant que le Père Noël ne prenne pas le train....

  17. #17
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 999
    Points : 9 383
    Points
    9 383
    Par défaut
    Hello,
    Citation Envoyé par Dav1961 Voir le message
    Je viens requérir votre aide afin de remplir une zone de texte (pas une TextBox, mais une zone de texte par insertion "zone de texte").
    Dans cette zone je souhaite avoir la date du jour et l'heure sous cette forme :

    Aujourd'hui nous sommes le : jeudi 22 décembre 2022
    et il est exactement : 17:51:20

    L'heure doit se mettre à jour à la manière d'un chronomètre.
    Avec ce code dans un module VBA :
    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
    Dim SchedRecalc As Date
     
     
    Sub Recalc()
    With ActiveSheet.Range("A1")
    .Value = Format(Time, "hh:mm:ss AM/PM")
    End With
    Call SetTime
    End Sub
     
     
    Sub SetTime()
    SchedRecalc = Now + TimeValue("00:00:01")
    Application.OnTime SchedRecalc, "Recalc"
    End Sub
     
     
    Sub Disable()
    On Error Resume Next
    Application.OnTime EarliestTime:=SchedRecalc, Procedure:="Recalc", Schedule:=False
    End Sub
    et la formule à 78chris voici ce que l'on peut obtenir :
    Nom : zonetexte.gif
Affichages : 474
Taille : 194,1 Ko

    Les soucis sont :
    1 - Quand on fait de l'édition dans la feuille active Excel l'heure ne se met plus à jour.
    2 - Toutes les secondes le curseur busy apparaît furtivement.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  18. #18
    Membre du Club Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Bonjour jurassic pork,

    Merci beaucoup pour ton aide.
    Je vais tester ça plus tard.

    Joyeuses fêtes de fin d'année

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

Discussions similaires

  1. Formule VBA pour modifier contenu celules
    Par Phoceens dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/03/2009, 18h37
  2. Réponses: 1
    Dernier message: 04/11/2008, 14h37
  3. VBA et zone de texte
    Par Wanted_Gulli dans le forum VBA Access
    Réponses: 13
    Dernier message: 15/05/2007, 18h33
  4. Masque de saisie pour zone de text
    Par achos dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/02/2007, 10h34
  5. javascript pour zone de text
    Par ridondo dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/12/2005, 16h43

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