incrémenation valeur VBA

gvives

XLDnaute Occasionnel
Bonjour à tous,

J'ai réalisé un code qui ne fonctionne pas (il n'y a pas de débogage). J'ai un fichier test en pièce jointe qui est bien expliqué.

Pourriez vous m'orienter sur ce qui ne fonctionne pas.

Merci beaucoup d'avance !

Bonne journée à tous !
 

Pièces jointes

  • Fichiertest.xlsm
    18.7 KB · Affichages: 42
  • Fichiertest.xlsm
    18.7 KB · Affichages: 49
  • Fichiertest.xlsm
    18.7 KB · Affichages: 48

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : incrémenation valeur VBA

Bonjour gvives,

remplace le code par celui-ci
Code:
Private Sub worksheet_change(ByVal target As Range)
If Not Intersect(target, Range("B6:B" & Range("B65535").End(xlUp).Row + 1)) Is Nothing Then
If target = target.Offset(-1, 0) Then
Cells(target.Row, 1) = Cells(target.Row - 1, 1) + 50
Else
Cells(target.Row, 1) = 50
End If
End If
End Sub
à+
Philippe
 

gvives

XLDnaute Occasionnel
Re : incrémenation valeur VBA

Merci beaucoup phlaurent55 !

Désolé mais je me suis trompé, les champs de la colonne B ne seront pas saisis manuellement en fait, il seront récupérés par VBA lors du worksheet_activate().

C'est pour cela que je souhaité utiliser le "for each"...
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : incrémenation valeur VBA

Re,

dans ce cas:
Code:
Private Sub Workbook_Activate()
' ici on récupère les données en colonne B
'
'
' et ensuite  on met les valeurs en colonne A
For Each cellule In Range("B6:B" & Range("B65535").End(xlUp).Row)
If cellule.Offset(-1, 0) = cellule Then
Cells(cellule.Row, 1) = Cells(cellule.Row - 1, 1) + 50
Else
Cells(cellule.Row, 1) = 50
End If
Next cellule
End Sub
à+
Philippe
 

job75

XLDnaute Barbatruc
Re : incrémenation valeur VBA

Bonjour gvives, Philippe,

Pourquoi ne pas entrer en A6 et tirer vers le bas :

Code:
=SI(B5<>B6;50;A5+50)
Si l'on veut absolument du VBA ce code fait la même chose :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
With Range("A6:A" & [B65536].End(xlUp).Row)
  .FormulaR1C1 = "=IF(R[-1]C2<>RC2,50,R[-1]C+50)"
  .Value = .Value 'supprime les formules
  Range("A" & .Count + 6 & ":A" & Rows.Count).ClearContents
End With
End Sub
A+
 

gvives

XLDnaute Occasionnel
Re : incrémenation valeur VBA

Merci Job75,

Effectivement je souhaite limiter l'usage des formules dans mon classeur Excel ,)

J'ai utilisé et adapté ton code pour qu'il s'effectue directement en worksheet_activate()

C'est parfait !!

Merci beaucoup à tous les deux pour m'avoir aidé.

Bonne journée !!
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87