Affichage des articles triés par date pour la requête clavier. Trier par pertinence Afficher tous les articles
Affichage des articles triés par date pour la requête clavier. Trier par pertinence Afficher tous les articles

VBA : Les ActiveX de contrôle des dates



Dans cette article je souhaite expliquer comment utiliser les contrôles ActiveX "Microsoft Monthview "et "Microsoft DTPicker", puisqu'ils ne sont plus fournis en natif dans les versions Excel 2013 et 2016. Dans une première partie nous développerons la récupération et l'installation de ces contrôles, puis leurs utilisations pour contrôler efficacement une saisie de date dans une feuille de calcul ou dans un formulaire VBA.

Installation des contrôles

 

En premier lieu, mettons en place les contrôles "Microsoft Monthview" et "Microsoft DTPicker", le fichier MSCOMCT2.OCX contient les contrôles en question, ainsi que les contrôles UpDown, ScrollBar et Animation. Il faut commencer par télécharger ce fichier, car il n'existe probablement pas sur votre ordinateur (si vous utilisez Excel 2013 ou 2016) vous pouvez le télécharger à l'adresse suivante : http://www.ocxme.com/ocx/files/mscomct2_ocx.html
Vous devez ensuite copier le fichier dans le dossier c:\Windows\system32 si vous avez une version 32 bits de Windows, ou dans le dossier c:\windows\sysWOW64\ en cas de version 64 bits.
Il faut à présent Exécuter le fichier OCX, pour cela activer l'invite de commande en mode Administrateur :  Utiliser la commande CMD dans votre commande Démarrer / Exécuter ou dans la zone de recherche selon votre version de Windows. Attention de bien valider la saisie à l'aide des touches SHIFT+ CTRL + Entrée du clavier pour bien basculer l'invite de commande en mode Administrateur.




La ligne de commande à saisir, sera alors :

Pour windows 32 bits : %systemroot%\System32\regsvr32 c:\windows\System32\MSCOMCT2.OCX
Pour windows 64 bits : %systemroot%\SysWoW64\regsvr32 c:\windows\SysWOW64\MSCOMCT2.OCX


Utilisation des contrôles dans Excel : Saisir une date dans une cellule

 

    • Accéder à l'onglet Développeur du Ruban
    • Utilisez la commande Insérer / contrôles ActiveX / Autres contrôles
    • Sélectionnez le contrôle "Microsoft Date and Time Picker control 6.0 (SP6)"
     


    • Dessinez l'objet en glissant + Positionnement et redimensionnement

    Attention la commande Mode Création du ruban Développeur est alors active, pour faire le test de fonctionnement, vous devrez d'abord la désactiver.




    • Quelques réglages de bases possibles grâce au menu contextuel de l'Objet



    • Pour affectez le choix utilisateur à une cellule, utilisez la commande Propriétés du  Menu contextuel, 



    • Renseignez la propriété LinKedCell

     

    Utilisation des contrôles en VBA : Saisir une date dans un formulaire

     

    Nous allons en premier lieu ajouter les contrôles dans la boite à Outils :



    • Affichez la boîte à outils
    • Faites clic droit pour obtenir le menu contextuel de la boîte
    • Sélectionner alors la commande Contrôle Supplémentaires…


    • Dans la liste des contrôles Choisissez "Microsoft MonthView control 6.0 (SP6)" et "Microsoft Date and Time control 6.0 (SP6)"


     
    • Cliquez sur OK
    • Dessiner les 2 objets MonthView1 et DTPicker1 sur votre formulaire grâce aux nouveaux contrôles apparaissant dans la boîte à outils.



    Ici le code VBA nous montre comment affecter le choix de l'utilisateur dans un contrôle ou l'autre, à une cellule de la feuille de calcul.

    Private Sub CommandButton1_Click()
         Range("a10").Value = DTPicker1.Value
         Range("a11").Value = MonthView1.Value

         UserForm1.Hide
    End Sub



    Merci de votre attention…



    VBA : Modifier la casse à l'aide du clic droit



    La casse est un terme utilisé dans les domaines de la typographie et de l'informatique pour   distinguer une alternative entre les lettres écrites en capitales (MAJUSCULE) et les lettres écrites en minuscule. En l’absence d'utilisation des fonctions de traitement de chaînes de caractères :
    1. =MAJUSCULE( chaîne de caractères )
    2. =MINUSCULE( chaîne de caractères )
    3. =NOMPROPRE( chaîne de caractères) - 1er lettre de chaque mot de la chaîne de caractères en majuscule
    Actuellement, votre logiciel Excel ne permet pas de modifier la casse des mots contenus dans les cellules d'une feuille de calcul (ni commande, ni touche de raccourci clavier). Aussi je vous propose ce code VBA permettant la bascule entre les trois positions. La difficulté ici ne réside pas dans la modification de la casse d'un contenu sélectionné mais plutôt dans le choix de l'affectation de ce code en vue de son exécution. Afin de rendre son utilisation la plus aisée possible, j'ai choisi ici d'utiliser le menu contextuel, c'est à dire de reprogrammer le menu surgissant du bouton droit de la  souris. Pour que cette application puisse être utilisable quelque soit le classeur que vous manipulez, vous avez le choix d'incorporer votre code soit dans un classeur de macros personnelles, soit dans un classeur de macros complémentaires.

     

     

     

     

     

     

     

    Première étape : Modifier le menu contextuel des cellules.

     

    Les procédures sont évidement stockées dans le module ThisWorkbook du projet VBA, j'ai ici choisi d'utiliser mon classeur (.xlsb) de macros personnelles.

    Sub resetmenu()
              Application.CommandBars("cell").Reset

     End Sub
    '**********************************************************
    Private Sub Workbook_Open()
    resetmenu
    'appel la macro qui effacera la commande du menu contextuel
    'crée lors de la session précédente


        Dim Cpop1 As CommandBarPopup
        Dim Cbut As CommandBarButton
        Dim MaBarre As CommandBar
        Set MaBarre = Application.CommandBars("cell")
        Set Cpop1 = MaBarre.Controls.Add(msoControlPopup)
        'on ajoute le popup qui va comporté tout les boutons
        With Cpop1
            .Caption = "Modifier la casse"    'label du sous-menu
        End With
        'on ajoute un bouton au sous-menu contextuel
        Set Cbut = Cpop1.Controls.Add(Type:=msoControlButton)
        With Cbut
            .FaceId = 403    ' bouton avec icône (référence à une table)
            .Caption = "MAJUSCLE"    ' label du bouton
            .OnAction = "majuscule"    'appel de la macro associée
        End With
        'on répéte l'opération pour les deux autres boutons
        Set Cbut = Cpop1.Controls.Add(Type:=msoControlButton)
        With Cbut
            .FaceId = 404
            .Caption = "minuscule"
            .OnAction = "minuscule"
        End With
        Set Cbut = Cpop1.Controls.Add(Type:=msoControlButton)
        With Cbut
            .FaceId = 306
            .Caption = "Nom Propre"
            .OnAction = "nompropre"
        End With
    End Sub


    Etape 2 : Écrire les trois macros pour la gestion de la casse


    Les procédures sont stockées dans une feuille de module de code du projet VBA, du même classeur (.xlsb) de macros personnelles.

    Dim Ch As Range
    Sub majuscule()
      For Each Ch In Selection
      'Pour chaque cellule Ch de ma sélection Selection
      'Selection permet de renvoyer l'objet sélectionné dans la fenêtre active

        If Not Ch.HasFormula Then
        'la propriété HasFormula de l'objet range permet de tester qu'aucune
        ' cellules de la plage ne contiennent de formule, dans ce cas la conversion est ignorée

          Ch.Value = UCase(Ch.Value) 'Upper Case = MAJUSCULE
        End If
      Next Ch
    End Sub

    '*************************************************************
    Sub minuscule()
      For Each Ch In Selection
        If Not Ch.HasFormula Then
          Ch.Value = LCase(Ch.Value) 'Lower Case = minuscule
        End If
      Next Ch
    End Sub


    '*************************************************************
     Sub nompropre()
      For Each Ch In Selection
        If Not Ch.HasFormula Then
          Ch.Value = Application.Proper(Ch.Value)
          'si une fonction Excel n'a pas d'équivalent en VBA
          'utiliser le la fonction Excel (anglais) comme une méthode de l'objet application

        End If
      Next Ch
    End Sub


    Merci de votre attention...



    Déplacez vous ! vite.



    Cet article, promis aux lecteurs depuis fort longtemps, fait suite à l'article du 7 Mars 2009 portant sur les raccourcis clavier  dans Excel. Ici nous allons exposer les raccourcis permettant le déplacement du pointeur de la cellule active puis les méthodes de sélection des plages de cellules toujours à l'aide du clavier.

     

    Les touches de déplacements :



    Touche
    seule
    Une colonne vers la droite
    Une colonne vers la gauche

     
    Une ligne vers le bas
    Une ligne vers le haut
    Un écran vers le haut
    Un écran vers le bas
    Début de ligne
     CTRL +  1er colonne occupée
    Dernière colonne occupée
    Dernière ligne occupée
    1er ligne occupée
    Feuille de calcul précédente
    Feuille de calcul suivante
    Cellule A1
     ALT + Un écran vers la gauche
    Un écran vers la droite


    Les méthode de sélection :




    Maj + 
    (ou F8)
     Sélection d'une cellule vers la gauche
    Sélection d'une cellule vers la droite
    Sélection d'une cellule vers le bas
    Sélection d'une cellule vers le haut
    Sélection de cellules sur la hauteur d'un écran vers le bas
    Sélection de cellules sur la hauteur d'un écran vers le haut
    Sélection jusqu'au début de la ligne
    Maj + CTRL + Sélection jusqu'à la 1er colonne occupée
    Sélection jusqu'à  la dernière colonne occupée
    Sélection jusqu'à  la dernière ligne occupée
    Sélection jusqu'à la 1er ligne occupée
      Sélection jusqu'à  la cellule A1


    Je me suis limité aux possibilités les plus utiles, il existe de nombreuses autres combinaisons (comme par exemple la touche F5 pour atteindre une cellule par son nom ou sa référence), aussi j’attends vos commentaires et suggestions.

    Merci de votre attention...



    Les raccourcis clavier pour Excel MAC




    Nous avons déjà traiter sur ce blog des raccourcis clavier (7 mars 2009) qui facilitent une bonne utilisation de votre logiciel préféré.
    Mais certain "exceliens" travaillent sur un Mac et ont dû mal à retrouver les équivalents sur leur clavier.
    Aussi je leurs recommanderai  la lecture de cet article très complet placé sur le site Microsoft Office Mac.



    Ce site est d'ailleurs une mîne d'informations pour tous les utilisateurs des versions Mac de Microsoft Office.
    Bonne Lecture


    VBA : Créer une macro multi feuilles



    Voici un point particulier sur lequel il faut noter une sérieuse différence avec les versions antérieures d’Excel. Effectivement pour être multi-feuilles une macro doit être enregistrée dans le fichier PERSONNAL.XLSB (cf article précédent). Voici comment procéder sur un exemple très simple.

     
    - 1 – Ouvrir une nouvelle feuille de calcul dans Excel et passez la commande Développeur / Enregistrer une macro
    • Attribuer un nom de la macro
    • Choisissez éventuellement une Touche de raccourci pour son Exécution clavier
    • Choisissez impérativement l’option Classeur de macros personnelles dans la liste Enregistrer la macro dans :
    • Cliquez sur Ok
    -2 – Procéder à l’enregistrement de votre macro (Dans l’exemple j’ai enregistré un code pour imprimer automatiquement une feuille de calcul en 3 exemplaires). N’oubliez pas de cliquez sur le bouton Arrêter l’enregistrement lorsque vous avez terminé.
    Automatiquement le code enregistré ira se copier dans une feuille de module de code du projet PERSONNAL.XLSB
    Si vous ne possédez pas l’onglet développeur : Cliquez sur le Bouton Office / Options Excel / Standard et cochez l’option Afficher l’onglet développeur dans le ruban

    - 3 – Pour voir le code de votre macro faites ALT + F11 ou Développeur / Visual Basic. Le code se trouve bien dans une feuille de module de code du projet PERSONAL.XLSB.
     Sub Impression_3_EX()
    ' Impression_3_EX Macro
    ExecuteExcel4Macro "PRINT(1,,,3,,,,,,,,2,,,TRUE,,FALSE)"
    End Sub


    - 4 –Nous allons ajouter un bouton à la barre d’outils Accès rapide pour une exécution plus pratique de la macro.
    • Faites clic / droit sur la barre d’outils Accès rapide
    • Choisissez l’option Personnaliser la barre d’outils Accès rapide
     
    • Dans la liste des catégories de commande, choisissez Macros
    • Sélectionnez la macro dans la liste et cliquez sur le bouton Ajouter >>, la macro apparaît dans la liste de droite
    • Cliquez sur le bouton Modifier… pour sélectionner un autre symbole
     
    • Ciquez sur le bouton Ok puis à nouveau sur Ok
    L’exécution sera désormais possible sur n’importe quel classeur en utilisant le symbole ajouté sur la barre d’outils Accès rapide
    -5 – A la fermeture du classeur n’omettez pas de confirmer l’enregistrement de la modification du fichier XLSB



    VBA : Contrôle de validité dans un formulaire



    Cette semaine voyons comment programmer simplement divers contrôles de validité sur les objets Textbox d’un formulaire (saisie obligatoire, type de données, longueur de chaîne…). Différentes fonctions de type String nous serons d’un grand secours…


    -1 - Réalisons d’abord le formulaire VB suivant :
     
    -2 – Puis affectons la macro OpenForm() à  un bouton de commande « Annuler » de la feuille de calcul pour ouvrir le formulaire. Le code a été saisi dans une feuille de module de code (Module 1)
    Sub OpenForm()
    'Rendre toutes les zones vide
    FormTest.TextBox1.Text = ""
    FormTest.erreur1.Caption = ""
    FormTest.TextBox2.Text = ""
    FormTest.erreur2.Caption = ""
    FormTest.TextBox3.Text = ""
    FormTest.erreur3.Caption = ""
    FormTest.TextBox4.Text = ""
    FormTest.erreur4.Caption = ""
    FormTest.TextBox5.Text = ""
    FormTest.TextBox6.Text = ""
    FormTest.erreur6.Caption = ""
    'avant l'ouverture du formulaire
      FormTest.Show
    End Sub

    -3 – Programmons maintenant par sécurité le  bouton de commande SORTIR du formulaire
    Private Sub Sortir_Click()
    'Fermons le formulaire en cas de click sur le bouton Annuler
    FormTest.Hide
    End Sub

    - 4 – Premier contrôle très simple pour savoir si l’utilisateur a bien renseigné ce textbox. 
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    'L'événement Exit se déclenche lorsque le focus sort de la zone de texte
    If TextBox1.Text = "" Then
    erreur1.Caption = "Vous n'avez pas rempli ce champ"
    'Un simple message pour attirer l'attention de l'utilisateur
    Else
    erreur1.Caption = ""
    End If
    End Sub

    -5 – Convertissons maintenant une saisie en MAJUSCULE
    Private Sub TextBox2_Change()
    'L'événement Change se déclenche lorsque la valeur de la zone de texte est modifiée
    TextBox2.Text = UCase(TextBox2.Text)
    'ou LCase() pour mettre en minuscule
    erreur2.Caption = "Conversion réussie"
    End Sub

    - 6 – Vérifions la longueur d’une chaîne, ici 5 caractères
     Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Len(TextBox3.Text) = 5 Then
    'Len() retourne la longueur d'une chaîne de texte
    erreur3.Caption = "Cette zone contient bien 5 caractères"
    Else
    erreur3.Caption = "Cette zone ne contient pas 5 caractères mais " _
      & Len(TextBox3.Text) & "caractère(s)"
    End If
    End Sub

    - 7 – Vérifions que la saisie est bien de type texte et qu’il ne s’agit pas d’un nombre ou d’une date.
     Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If IsNumeric(TextBox4.Text) Or IsDate(TextBox4.Text) Then
    'isNumeric() et isDate() renvoie VRAI si la zone contient un nombre ou une date
    erreur4.Caption = "Ceci n'est pas un texte"
    Else
    erreur4.Caption = "Ceci est  un texte"
    End If
    End Sub

    - 8 – Associons dans la même procédure les 4 contrôles précédents
    Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBox5.Text = "" Or Len(TextBox5.Text) <> 5 _
    Or IsNumeric(TextBox5.Text) Or IsDate(TextBox5.Text) Then
           MsgBox "Veuillez remplir cette zone avec" _
     & Chr(10) & "un texte de 5 caractères"
    'Chr() simule un touche clavier ici le retour ligne
    Else
    TextBox5.Text = UCase(TextBox5)
    MsgBox "Ceci est  un texte de 5 caractères" _
    & Chr(10) & "converti en majuscule"
    End If
    End Sub
     
    - 9 – Dernier exemple, vérifions si une chaîne 1 est comprise dans une chaîne 2, ici nous voulons savoir si la valeur 1 ou 2 se trouve en première  position de la saisie
    Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If InStr(1, TextBox6.Text, 1) Or InStr(1, TextBox6.Text, 2) Then
    'InStr(départ, chaîne, comparaison) permet de savoir si comparaison est présent
    ' dans chaîne à partir de la position départ
    erreur6.Caption = "La saisie commence par le chiffre 1 ou 2"
    Else
    erreur6.Caption = "La saisie ne commence pas par le chiffre 1 ou 2"
    End If
    End Sub



    Les raccourcis clavier



    Beaucoup d’utilisateurs sont aujourd’hui encore très favorable à l’utilisation des touches de raccourcis clavier pour manipuler leur logiciel préféré. Voici donc quelques possibilités offertes par Excel 2007, il est vrai que certains de ces raccourcis sont incontournables pour optimiser son travail.

    Les touches de fonctions



    F1
    F2
    F3
    F4
    F5
    F6
     
    Afficher
    l’aide
    Activer
    l’édition de la cellule
    Coller
    un
    nom
    Répéter la dernière action
    Atteindre une
    cellule
    Atteindre le volet
    suivant
    Maj +

    Insérer
    un
    commentaire
    Insérer
    une Fonction
    Poursuivre une recherche
    Lancer
    une recherche
    Atteindre le volet précédent
    Alt +
    Insérer un graphique dans la feuille
    Enregistrer
    sous

    Quitter Excel


    Ctrl +
    Afficher ou masquer le ruban
    Aperçu
    avant impression
    Gérer
    les noms
    Fermer
    le
    classeur
    Restaurer
    la
    fenêtre
    Atteindre la fenêtre suivante

    F7
    F8
    F9
    F10
    F11
    F12

    Vérifier l’orthographe
    Etendre
    la sélection

    Créer
    un
    menu
    Insérer un graphique dans une nouvelle  feuille
    Enregistrer sous
    Maj +
    Chercher
    un synonyme
    Ajouter à la
    sélection

    Afficher le menu contextuel
    Insérer une
    feuille
    de calcul
    Enregistrer
    le classeur
    Alt +

    Gérer
    les Macros


    Ouvrir
    l’éditeur Visual Basic

    Ctrl +


    Réduire la
    fenêtre
    Agrandir ou restaurer la fenêtre
    Insérer une feuille
    Macro
    Ouvrir un classeur

    Les actions clavier

    CTRL + A
    Sélectionner toute la feuille de calcul
    CTRL + O
    Ouvrir un classeur
    CTRL + B
    Recopier vers le bas
    CTRL + P
    Imprimer
    CTRL + C
    Copier une sélection
    CTRL + Q
    Appliquer un format nombre (date heure)
    CTRL + D
    Recopier vers la droite
    CTRL + R
    Annuler un format date
    CTRL + E
    Appliquer un format nombre (puissance de 10)
    CTRL + S
    Enregistrer un classeur
    CTRL + F
    Lancer une recherche
    CTRL + T
    Atteindre une cellule
    CTRL + G
    Mettre une sélection en gras
    CTRL + U
    Mettre une sélection en soulignement
    CTRL + H
    Faire un remplacement
    CTRL + V
    Coller une sélection
    CTRL + I
    Mettre une sélection en italique
    CTRL + W
    Fermer le classeur
    CTRL + J
    Appliquer un format nombre (date)
    CTRL + X
    Couper une sélection
    CTRL + K
    Insérer un lien hypertexte…
    CTRL + Y
    Répéter la dernière action
    CTRL + L
    Afficher ou masquer un plan
    CTRL + Z
    Annuler la dernière action
    CTRL + M
    Appliquer un format nombre (Euro)
    CTRL + ;
    Insérer la date courante
    CTRL + N
    Créer un nouveau classeur
    CTRL + :
    Insérer l’heure courante



    top