Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
J'aimerais si possible en VBA ajouter aux cellules "B3:B200" un N° de ligne que si une des cellules de la colonne "D" et rempli.
ex: D3= pierre B3= 1 ect...
D'avance merci à qui pourra m'aider.
Cordialement
Maval
Re : Ajouter automatiquement un N° de ligne en VBA
Bonjour Maval,
A mon avis, il serait plus simple de faire avec une formule en colonne B, mais pour répondre à ta demande, voici ton fichier modifié avec une macro événementielle.
Re : Ajouter automatiquement un N° de ligne en VBA
Bonjour Papou,
Merci pour le code mais un ptit problème si je rentre les noms dans la colonne "D" manuellement sa fonctionne nickel si je fait un copie coller sa ne fonctionne pas?
Re : Ajouter automatiquement un N° de ligne en VBA
Bonjour maval, Papounet,
Comme le dit Papounet il existe une solution simple par formule, en B3 à tirer vers le bas :
Code:
=SI(D3="";"";MAX(B$2:B2)+1)
Maintenant on peut utiliser VBA pour l'entrer dans toute la plage B3:B200 :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With [B3:B200]
If Not Intersect(Target, .Resize(, 3)) Is Nothing Then 'colonnes B:D
Application.EnableEvents = False
.FormulaR1C1 = "=IF(RC4="""","""",MAX(R2C:R[-1]C)+1)"
.Value = .Value
Application.EnableEvents = True
End If
End With
End Sub
Avantage : la colonne B n'est modifiable que si l'on modifie la colonne D.
Re : Ajouter automatiquement un N° de ligne en VBA
RE Maval,
Je pense que quand tu dis copier-coller, tu parles de plusieurs cellules n'est-ce pas ?
Effectivement, la numérotation ne marche que pour une seule cellule à la fois. Voici donc la macro corrigée pour la copie de plusieurs cellules. Si tu as beaucoup de lignes dans ta feuille, la boucle risque de ralentir quelque peu l'exécution mais ça fonctionnera toujours.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Columns.Count > 1 Then Exit Sub
Application.EnableEvents = False
For Each cel In Range("D3:D" & Rows.Count).SpecialCells(xlCellTypeConstants)
If cel.Offset(0, -2) = "" Then cel.Offset(0, -2) = cel.Offset(-1, -2) + 1
Next
Application.EnableEvents = True
End Sub
Cordialement.
Oups : bonjour Laetitia, Job75, j'ai été interrompu dans ma réponse et je n'avais pas rafraîchi.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD