Ajouter automatiquement un N° de ligne en VBA

maval

XLDnaute Barbatruc
Bonjour

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
 

Pièces jointes

  • Ajouter un N° ligne.xlsm
    10.5 KB · Affichages: 43

Papou-net

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

Cordialement.
 

Pièces jointes

  • Copie de Ajouter un N° de ligne.xls
    36.5 KB · Affichages: 53

maval

XLDnaute Barbatruc
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?

Cordialement

Max
 

laetitia90

XLDnaute Barbatruc
Re : Ajouter automatiquement un N° de ligne en VBA

bonjour tous :):)


Code:
 For i = 3 To Cells(Rows.Count, 4).End(xlUp).Row
 If Cells(i, 4) <> "" Then Cells(i, 2) = i - 2
 Next

ou encore
Code:
x = 1
 For i = 3 To Cells(Rows.Count, 4).End(xlUp).Row
 If Cells(i, 4) <> "" Then Cells(i, 2) = x: x = x + 1
 Next

ps salut job:):)
 
Dernière édition:

job75

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

Fichier joint.

Edit : bonjour Laetitia :)

A+
 

Pièces jointes

  • Ajouter un N° de ligne(1).xls
    44 KB · Affichages: 43
Dernière édition:

job75

XLDnaute Barbatruc
Re : Ajouter automatiquement un N° de ligne en VBA

Re,

Ce qu'il faut bien comprendre c'est que la formule est très simple et que 200 lignes c'est peu de chose en VBA.

Avec la plage D3: D200 remplie la macro s'exécute chez moi (Excel 2010) en 4 millièmes de seconde...

Il est donc inutile de se casser la tête à traiter chaque cellule modifiée.

A+
 

Papou-net

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

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa