Déplacement automatique d’une cellule à l’autre lors de la saisie de données (Microsoft Excel)
Sheila a une feuille de travail dans laquelle une série de nombres à quatre chiffres doit être entrée. Elle aimerait un moyen où Entrée ou Tabulation n’a pas besoin d’être pressé entre chaque entrée. En d’autres termes, après avoir appuyé sur chaque quatrième chiffre, Sheila souhaite qu’Excel passe automatiquement à la cellule suivante.
Excel ne propose pas ce type de saisie de données en option. Vous pouvez toutefois créer une macro pour gérer la saisie de données. Une méthode consiste à utiliser une simple macro qui invite l’utilisateur à saisir une chaîne de caractères. Lorsque l’utilisateur appuie sur Entrée (pour indiquer que la chaîne est complète), la macro prend chaque bloc de quatre caractères successif et les place dans des cellules consécutives.
Sub FourCharEntry1() Dim str As String Dim x As Integer Dim y As Integer str = InputBox("Enter string") y = 0 For x = 1 To Len(str) Step 4 ActiveCell.Offset(0, y) = "'" & Mid(str, x, 4) y = y + 1 Next End Sub
Notez que la macro, lorsqu’elle met des blocs de quatre caractères dans des cellules, s’assure que chaque bloc est précédé d’une apostrophe. La raison en est de gérer les cas où le bloc de quatre caractères peut être composé uniquement de nombres et que ces nombres commencent par un ou plusieurs zéros. L’ajout de l’apostrophe garantit qu’Excel traite l’entrée de cellule comme du texte et que les zéros non significatifs ne seront pas effacés.
Vous pouvez également éviter l’utilisation d’une InputBox en permettant simplement à quelqu’un de saisir du texte dans une cellule de la feuille de calcul. La personne peut taper autant de fois qu’elle le souhaite (des milliers de caractères, si nécessaire).
Ensuite, avec la cellule sélectionnée, vous pouvez exécuter une macro qui extraira les informations de la cellule et effectuera la même tâche, en la divisant en morceaux de quatre caractères. La macro suivante fait exactement cela:
Sub FourCharEntry2() Dim str As String Dim x As Integer Dim y As Integer str = ActiveCell.Value y = 0 For x = 1 To Len(str) Step 4 ActiveCell.Offset(0, y) = "'" & Mid(str, x, 4) y = y + 1 Next End Sub
Une autre approche consiste à utiliser un formulaire utilisateur personnalisé pour l’entrée utilisateur. Le formulaire fournit une interaction beaucoup plus riche avec VBA, de sorte que vous pouvez réellement le faire insérer des informations dans des cellules après chaque quatrième caractère entré.
Commencez par créer un formulaire utilisateur (comme décrit dans d’autres numéros de ExcelTips) qui contient deux contrôles: une zone de texte et un bouton. Nommez la zone de texte vText et associez-lui le code suivant:
Private Sub vText_Change() If Len(vText) = 4 Then ActiveCell = vText ActiveCell.Offset(0, 1).Activate UserForm1.vText.Value = "" End If End Sub
Cela s’exécute simplement chaque fois que le contenu de la zone de texte change (c’est-à-dire lorsque vous tapez chaque caractère), puis vérifie la longueur de tout ce qu’il contient. Lorsque la longueur atteint 4, le code prend ces caractères et les met dans une cellule. Le contenu de vText est ensuite vidé.
Le nom du bouton que vous créez dans le formulaire utilisateur n’a pas vraiment d’importance. Il sera utilisé comme moyen de fermer le formulaire utilisateur, et devrait avoir le code suivant associé:
Private Sub Cancel_Click() Unload UserForm1 End Sub
Lorsque vous êtes prêt à utiliser le formulaire utilisateur, sélectionnez simplement la cellule dans laquelle vous souhaitez que la saisie commence, puis exécutez la macro suivante:
Sub Start() UserForm1.Show End Sub
Le formulaire utilisateur apparaît et vous pouvez commencer à taper. Lorsque vous avez terminé, cliquez simplement sur le bouton et le formulaire utilisateur se ferme.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (3923) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:
link: / excelribbon-Automatically_Moving_from_Cell_to_Cell_when_Entering_Data [Déplacement automatique d’une cellule à l’autre lors de la saisie de données]
.