Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

incrémenation valeur VBA

  • Initiateur de la discussion Initiateur de la discussion gvives
  • Date de début Date de début

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 !

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

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
 
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"...
 
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
 
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+
 
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 !!
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 Liste de choix...
Réponses
8
Affichages
326
Réponses
16
Affichages
680
  • Question Question
Microsoft 365 Recherche valeurs
Réponses
4
Affichages
143
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…