Comment numéroter automatiquement les lignes si la cellule adjacente n'est pas vide dans Excel ?

Dans Excel, utiliser la poignée de remplissage pour créer manuellement une série de nombres est une méthode courante pour générer des numéros de série ou des index pour des listes. Cependant, il existe souvent des situations où vous souhaitez uniquement numéroter les lignes si une cellule adjacente spécifique contient des données. Par exemple, vous pourriez vouloir générer automatiquement des numéros de ligne dans une liste, mais ignorer les lignes où les cellules adjacentes sont vides. De plus, vous pourriez attendre que ces numéros se mettent à jour instantanément lorsque des données sont ajoutées ou supprimées — offrant ainsi une séquence toujours à jour sans intervention manuelle.
Numéroter automatiquement les lignes si la cellule adjacente n'est pas vide avec une formule
Numéroter automatiquement les lignes si la cellule adjacente n'est pas vide avec un code VBA
Numéroter automatiquement les lignes si la cellule adjacente n'est pas vide avec une formule
Une méthode efficace pour obtenir une numérotation dynamique basée sur les valeurs des cellules adjacentes consiste à utiliser une formule Excel. Avec cette approche, les numéros de ligne ne seront affichés que lorsque la cellule adjacente contient une valeur. Lorsque vous ajoutez ou supprimez des données dans ces cellules, la numérotation se met à jour automatiquement. Voici une méthode pratique que vous pouvez utiliser :
1. Sélectionnez la cellule où vous souhaitez que la numérotation commence (par exemple, A2 si vos données commencent en B2). Entrez la formule suivante :
=IF(B2<>"",COUNTA($B$2:B2),"")
2. Ensuite, faites glisser la poignée de remplissage vers le bas le long de vos données pour appliquer cette formule aux autres lignes. La numérotation s'ajustera automatiquement, affichant des numéros uniquement pour les lignes où des données sont présentes dans la colonne B.
Si vous rencontrez des problèmes où les numéros ne se mettent pas à jour comme prévu, vérifiez que la formule a été copiée dans toutes les lignes pertinentes et qu'il n'y a pas de cellules fusionnées ou de validations de données interférant avec votre plage. N'oubliez pas que les formules dépendent d'une référence précise et peuvent être perturbées par des changements structurels dans la feuille de calcul.
Numéroter automatiquement les lignes si la cellule adjacente n'est pas vide avec un code VBA
Pour les utilisateurs avancés, ou dans les cas où vous préférez ne pas appliquer des formules dans toute votre feuille de calcul — ou encore lorsque vous avez besoin que la numérotation se mette à jour même lors du collage de données, de la suppression de blocs ou de modifications fréquentes — une macro VBA offre une alternative intéressante. Avec VBA, vous pouvez mettre à jour automatiquement les numéros de ligne dans une colonne chaque fois que la cellule adjacente est modifiée, sans avoir recours à des formules. C'est idéal pour les formulaires de saisie de données, les journaux d'importation ou les listes de tâches avec des changements fréquents de mise en page.
1. Appuyez sur Alt + F11 pour ouvrir la fenêtre de l'éditeur Visual Basic for Applications. Dans l'Explorateur de projets, localisez votre classeur, puis double-cliquez sur la feuille de calcul pertinente (par exemple, « Feuil1 ») sous « Microsoft Excel Objects ».
2. Dans la fenêtre de code qui apparaît, collez le code suivant. Cet exemple suppose que vous souhaitez numéroter les lignes dans la colonne A en fonction de si la colonne B n'est pas vide ; vous pouvez ajuster les références pour votre plage spécifique si nécessaire :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chk As Range
Set chk = Intersect(Target, Me.Columns("B"))
If chk Is Nothing Then Exit Sub
Application.EnableEvents = False
Call RenumberNonBlank(Me, "B", "A", 2)
Application.EnableEvents = True
End Sub
Sub RenumberNonBlank(ws As Worksheet, _
keyCol As String, _
numCol As String, _
firstDataRow As Long)
Dim lastRow As Long
Dim r As Long
Dim seq As Long
lastRow = ws.Cells(ws.Rows.Count, keyCol).End(xlUp).Row
seq = 1
For r = firstDataRow To lastRow
With ws
If Trim(.Cells(r, keyCol).Value) <> "" Then
.Cells(r, numCol).Value = seq
seq = seq + 1
Else
.Cells(r, numCol).ClearContents
End If
End With
Next r
End Sub
3. Enregistrez et fermez l'éditeur VBA. Maintenant, chaque fois que vous ajoutez, modifiez ou effacez du contenu dans la colonne B, la colonne A sera immédiatement renumérotée, reflétant la présence (ou l'absence) de données. La séquence montera ou descendra lorsque vous ajouterez ou supprimerez des entrées dans la colonne B.
Notes et Précautions : Cette macro doit être placée spécifiquement dans la fenêtre de code de la feuille de calcul souhaitée (pas dans un module ou ThisWorkbook) pour répondre aux modifications des cellules. Assurez-vous également que les macros sont activées dans vos paramètres Excel pour que le code fonctionne. Si votre « plage de données » passe à des colonnes autres que A et B, mettez à jour les références Set chk = Intersect(Target, Me.Columns("B"))
et Call RenumberNonBlank(Me, "B", "A", 2)
en conséquence.
Dépannage : Si la numérotation ne se met pas à jour, revérifiez que vous éditez la bonne feuille de calcul et que le code est bien placé dans la fenêtre de code appropriée de la feuille de calcul. Assurez-vous également d'avoir enregistré le classeur en tant que fichier compatible avec les macros (.xlsm). En cas d'erreurs inattendues, vérifiez que vous n'avez pas altéré la structure de votre feuille de calcul, comme des cellules fusionnées ou des données dans les lignes d'en-tête.
Meilleurs outils de productivité pour Office
Boostez vos compétences Excel avec Kutools pour Excel, et découvrez une efficacité sans précédent. Kutools pour Excel propose plus de300 fonctionnalités avancées pour augmenter la productivité et gagner du temps. Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...
Office Tab apporte une interface à onglets à Office, et facilite grandement votre travail
- Activez la modification et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
- Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
- Augmente votre productivité de50 %, et réduit des centaines de clics de souris pour vous chaque jour !