Insertion de zéros non significatifs avec Excel VBA

Dans de nombreux systèmes, les numéros d’identification (tels que le numéro de client, le numéro de commande ou le numéro de produit) doivent comporter un nombre spécifique de caractères. C’est pourquoi on trouve souvent des numéros comme celui-ci: 00000045478. Le concept des numéros d’identification uniques consiste à les forcer à la longueur appropriée. Dans ce cas, les zéros de tête sont insérés pour donner aux nombres la longueur correcte.

Le fonctionnement manuel de cette opération dans Excel est une question fatale. Cependant, grâce à la macro appropriée, l’insertion de zéros non significatifs deviendra facile.


NOTE

Certains gourous d’Excel remarqueront rapidement que dans ce cas, vous pouvez donner aux nombres le bon format et insérer des zéros non significatifs. Par conséquent, ils sélectionnent l’onglet Personnalisé dans la boîte de dialogue Formatage des cellules et entrez 0000000000 dans le champ Type.
Le problème avec cette solution est que l’insertion de zéros de cette manière est purement esthétique. Un rapide coup d’œil à la barre de formule nous montrera que les données ont toujours un format numérique, sans zéros (elles ne deviennent pas des données texte). Ainsi, après les avoir copiés sur une autre plate-forme (programme autre qu’Excel), les zéros non significatifs seront perdus.
Comment ca marche?
Supposons que tous les numéros de client doivent comporter 10 caractères. Par conséquent, vous devez ajouter le nombre approprié de zéros non significatifs à chacun d’eux, de sorte que le nombre comporterait 10 caractères. C’est ce que fera la macro ci-dessous.
En regardant la macro, il convient de rappeler que, pour les adapter à vos propres besoins, vous devez apporter les modifications appropriées à la cinquième étape.

Sub InsertionZero ()
'Étape 1: Déclaration des variables
Dim MyRange As Range
Dim MyCell As Range
'Étape 2: Voulez-vous enregistrer la feuille avant de modifier les cellules?
Select Case MsgBox ("L'action ne peut pas être annulée." & "Voulez-vous d'abord enregistrer la feuille?", VbYesNoCancel)
Case Is = vbYes
ThisWorkbook.Save
Case Is = vbCancel
Exit Sub
End Select
'Étape 3: Définir la plage de cellules
Set MyRange = Selection
'Étape 4: Commencez la boucle dans la plage
For Each MyCell In MyRange
'Étape 5: Insertion de zéros à gauche de sorte que le nombre comporte dix caractères
If Not IsEmpty(MyCell) Then
MyCell.NumberFormat = "@"
MyCell = "0000000000" & MyCell
MyCell = Right(MyCell, 10)
End If
'Étape 6: Accédez à la cellule suivante de la plage
Next MyCell
End Sub

 


1. Dans la première étape, deux variables d’objet du type Range sont décodées – dans la variable MyRange, l’adresse d’une seule plage sera stockée, tandis que la variable MyCell sera utilisée pour stocker les données de cellules liées consécutivement à partir d’une plage donnée.
2. Lorsque la macro est lancée, la pile d’annulation est supprimée, ce qui signifie que vous ne pouvez pas annuler les actions effectuées par la macro. Au fur et à mesure que les données changent, il est judicieux de sauvegarder le classeur avant d’exécuter la macro. C’est le cas dans la deuxième étape. Une boîte de message est en cours de livraison, dans lequel des options pour la rédaction d’un classeur sont disponibles. Il offre trois options: Oui, Non et Annuler. Le fait de cliquer sur le bouton Oui enregistre le classeur et poursuit l’opération de macro. Cliquez sur le bouton Annuler pour mettre fin à l’opération de macro. Cependant, un clic sur le bouton Non lancera d’autres opérations de macro sans enregistrer le classeur auparavant.
3. Dans la troisième étape, la plage de cellules cible est transmise à la variable MyRange. Dans ce cas, la plage sélectionnée est déjà sélectionnée dans la feuille. Bien entendu, la variable MyRange peut être définie sur une plage spécifique, par exemple Plage (“A1: Z100”). De même, si un nom est attribué à la plage. Ensuite, vous pouvez simplement entrer: Range (“MySpecial Name”).
4. Dans la quatrième étape, une boucle est exécutée pour chaque cellule dans la plage indiquée.
5. Lorsque la cellule est activée, à l’étape 5, la macro basée sur la propriété IsEmpty détermine si la cellule est vide. Cela améliore les performances. Si la cellule est vide, aucune action n’est entreprise.

La macro vérifie ensuite si la cellule est formatée en texte. En effet, pour les cellules au format numérique, il n’est pas possible d’insérer des zéros au début – Excel les supprimera automatiquement. Dans la ligne suivante, le format est défini sur @ à l’aide de la propriété NumberFormat. Ce symbole indique le format du texte.

Ensuite, le nombre approprié de zéros joint les valeurs de la macro-cellule. Cela est dû aux dix zéros visibles dans le code et à l’utilisation du signe & qui les lie à la valeur de la cellule. Enfin, un nombre inutile de zéros est supprimé avec la fonction Right. En conséquence, la valeur dans la cellule obtient la longueur souhaitée de dix caractères.

6. Dans cette étape, la boucle passe à la cellule suivante.

Comment utiliser la macro?
Pour implémenter cette macro, vous pouvez copier et coller son code en mode standard.
À cette fin:
1. Utilisez les touches Alt + F11 pour activer Visual Basic Editor.
2. Dans la fenêtre Projet, cliquez avec le bouton droit sur le nom du projet ou de la feuille de calcul.
3. Sélectionnez Insérer / Module.
4. Tapez ou collez le code.
S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Fonctions Excel

Macro VBA Utiles

Excel Pratique

Programmation VBA

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x
()
x