Incrémentation 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,

Une petite question en VBA...

Je souhaite dans une feuil1 qu'à chaque fois qu'un utilisateur saisie un libellé dans la colonne A que dans la colonne B une valeur s'incrémente + 50 par exemple :

Range (A1) = Toto - Range(B1) = 50 ; Range (A2) = Titi - Range(B2) = 100 ; Range (A3) = Tata - Range(B3) = 150 et ainsi de suite...

J'ai commencé un code mais il ne fonctionne pas correctement :

Private Sub worksheet_change(ByVal target As Range)
For Each Cell In Columns(2)
If Cell <> "" Then
Cell.Offset(1, 0) = Cell.Offset(1, -1) + 50
End If
Next
End Sub

Pourriez vous me donner un coup de mains 🙂

Merci d'avance...
 
Re : Incrémentation valeur VBA

Bonjour gvives,

Je verrais la chose comme ceci:

Code:
Private Sub worksheet_change(ByVal target As Range)
Application.EnableEvents = False
For Each Cell In Columns(1).SpecialCells(xlCellTypeConstants)
   If Cell <> "" Then
     Cell.Offset(0, 1) = Iif(Cell.Row = 1, 50, Cell.Offset(-1, 1) + 50
   End If
Next
Application.EnableEvents = True
End Sub
A vérifier (pas testé).

Cordialement.
 
Re : Incrémentation valeur VBA

C'est bon j'ai adapté le code et ça marche 😉

Private Sub worksheet_change(ByVal target As Range)
Application.EnableEvents = False
For Each Cell In Columns(2).SpecialCells(xlCellTypeConstants)
If Cell <> "" Then
If Cell.Row = 1 Then
Cell.Offset(0, 1) = 50
Else
Cell.Offset(0, 1) = Cell.Offset(-1, 1) + 50
End If
End If
Next
Application.EnableEvents = True
End Sub

Merci beaucoup encore !!

Bonne journée
 
Re : Incrémentation valeur VBA

Bonjour gvives, re Papou-net,

Dans la fonction IIf il faut savoir que tous les arguments sont toujours calculés.

D'où bug si l'un renvoie une erreur...

Pas de problème avec If...Then...Else :

Code:
Private Sub worksheet_change(ByVal target As Range)
Application.EnableEvents = False
For Each Cell In Columns(1).SpecialCells(xlCellTypeConstants)
   If Cell <> "" Then
     If Cell.Row = 1 Then Cell.Offset(0, 1) = 50 Else Cell.Offset(0, 1) = Val(Cell.Offset(-1, 1)) + 50
   End If
Next
Application.EnableEvents = True
End Sub
Edit : ah très bien, gvives a été plus rapide que moi 🙂

A+
 
Dernière édition:
Re : Incrémentation valeur VBA

Salut le fil,

Hum et sinon pourquoi tu ne passes tout simplement pas par une formule Excel?

=SI(A2<>"";B1+50;"")

(formule à placer en B2 et à extrapoler sur toute la colonne B)

Pour une cellule en B:
Si la valeur dans la cellule A est non nulle, alors tu prends la valeur voisine d'une case au-dessus (pour B2, tu prends B1 + 50) à laquelle tu ajoutes 50 sinon tu laisses la case vide.

Cordialement,
Mat'
 
Re : Incrémentation valeur VBA

Bonjour Papou-net,
Bonjour Job75,
Bonjour Matichoux,

Merci Job 75 pour l'explication, j'avoue avoir utilisé sans savoir la fonction IF ... ELSE... et sans savoir pourquoi cela avait fonctionné.

Matichoux, je n'ai pas utilisé les formules Excel car je souhaite disposer d'un fichier vierge de formule et passer que par le VBA (pour éviter la case provenant des utilisateurs et limiter l'usage des cellules protégées)...

Encore merci à tous pour votre aide...

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 Probléme VBA
Réponses
8
Affichages
587
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour