Affichage des articles dont le libellé est macro. Afficher tous les articles
Affichage des articles dont le libellé est macro. Afficher tous les articles

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...



VBA : Les fichiers XLAM




Suite à l’article concernant l’emploi des fichiers XLSB, classeur de  « macros personnelles » VBA : Créer une macro multi feuilles, je vous présente aujourd’hui une alternative permettant de garder en mémoire, les macros utiles de manière transversales. Les fichiers xlam sont en fait des classeurs de macros, nommés « Macro complémentaires »

Si vous avez créé des macros dans un classeur, procédé à son enregistrement par Fichier / Enregistrer sous, et sélectionnez dans la liste Type, la valeur : Macro complémentaires Excel (*.xlam). Le chemin d’accès du fichier est alors dans Users \ appData \ Roaming \ Microsoft \ AddIns



Ensuite il faudra activer le classeur de Macro complémentaires en passant la commande Fichier / Options / compléments puis en cliquant sur le bouton atteindre de la commande Gérer les compléments Excel

Activer ensuite le classeur de vos macros complémentaires qui apparait dans la liste :



Accéder alors à votre éditeur Visual basic vous constaterez que le classeur est bien inclus dans la fenêtre des projets VB.



Ensuite si vous accédez à la gestion de votre barre d’outils d’accès rapide et que vous sélectionnez la valeur Macro dans la liste des catégories, vous verrez apparaitre la liste des macros contenues dans votre fichier XLAM.





A la semaine prochaine….



VBA : La propriété Dialogs



Comment avoir accès aux boîtes de dialogues du logiciel Excel lors de l’exécution des macro commandes . C'est ce que permet la propriété Dialogs de l'objet application, une petite vidéo très simple sur cette importante possibilité offerte par la langage VBA.




Bonne consultation...



VBA : Les différents types de données




Comment choisir le bon type de données lors de la création de vos variables ? Voici un tableau rappelant toutes les informations techniques nécessaires à un choix éclairé

Type
contenu
Plage
de valeurs
Byte
Valeurs binaires 0 à 255
Taille en octets : 1
Boolean
Valeurs logiques True ou False
Taille en octets : 2
Currency
Utiliser pour les valeurs monétaires. 4 chiffres à droite du séparateur décimale et 15 à gauche maximum + / - 9E14
Taille en octets : 8
Date
Informations de date et heure 1er janvier 100 au 31 décembre 9999
Taille en octets : 8
Double
Nombre en virgule flottante (double précision) + / - 5E-324 à 1,8
Taille en octets : 8
Integer
Entiers -32 768 à 32 767
Taille en octets : 2
Long
Entiers + / - 2E09
Taille en octets : 4
Object
N'importe quelle référence d'objet
Single
Nombre en virgule flottante (simple précision) + / - 1E-45 à 3E38
Taille en octets : 4
String
Texte Longueur fixe : 1 à 65 400
Longueur variable : 0 à E09
Variant
N'importe lequel des types précédents Nombres : cf double
Caractères : cf texte à longueur variables



VBA : Affecter une macro à un objet Spin ou ScrollBar




Dernière vidéo de la série macro commande ! J'explique ici comment placer et paramétrer un objet toupie ou barre de défilement dans le but de gérer l'incrémentation d'un compteur...






Cette vidéo nous explique dans un premier temps, comment placer et paramétrer un groupe d'options puis comment placer et paramétrer des boutons d'options à l'intérieur du groupe avant de leurs affecter une macro-commande...



VBA : Affecter une macro à une liste déroulante



Cette vidéo nous explique dans un premier temps, comment placer et paramétrer l'objet liste déroulante d'un formulaire Excel, puis ensuite comment lui affecter une macro-commande...






Cette vidéo nous explique dans un premier temps, comment placer et paramétrer l'objet case à cocher d'un formulaire Excel, puis ensuite comment lui affecter une macro-commande...





VBA : Affecter une macro à un bouton de commande



Dans les semaines qui viennent je vais parler de  l'affectation des macro-commandes aux objets de formulaire Excel (dans la feuille de calcul). Cette première vidéo traite de l'objet bouton de commande....




VBA : Affecter une macro à la barre d'accés rapide



Voyons dans cette vidéo, comment nous pouvons affecter une macro-commande à un bouton de la barre d'outils d'accès rapide. Cela s'avèrera fort utile pour les macro-commandes multi-classeur...





VBA : Modifier une macro



Poursuivons notre tour d'horizon des macro commandes. Une fois la macro achevée il peut être utile voir indispensable de la modifier, pour cela il faut accéder à son code VBA et commencer à se familiariser avec le langage...




VBA : Exécuter & supprimer une macro

 

Notre macro commande étant enregistrée, procédons maintenant à son exécution...



Creative Commons License

VBA : Enregistrer une macro commande



Maintenant que nous savons naviguer dans l'interface de programmation, cette vidéo nous montre à travers un exemple très simple, comment on peut enregistrer une macro commande.




VBA : Interface de développement



Suite aux deux derniers articles, je vais durant quelques semaines aborder les éléments de bases de la programmation VBA en insistant plutôt sur la notion de macro commandes. Cette semaine découvrons déjà l'environnement de travail du programmeur...
Ah oui j'oubliai, je vais le faire sous la forme de vidéo.




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



top