Code VBA à rectifier

Signaler
Messages postés
3
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
28 juillet 2009
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonjour,
j'ai ecrit un code en VBA mais et ça marche au niveau du parcour de la plage des cellules mais, le probleme c'est que y a pas d'affectation dans les cellules cibles,
donc merci pour votre aide ....
voici mon code (pas tres long) :

Sub Bouton1_QuandClic()
Dim code, debit, credit As String
worksheets("A").Select
Range("a2").Select
While ActiveCell.Value <> ""
code = ActiveCell.Value
debit = Val(ActiveCell.Offset(0, 2))
credit = Val(ActiveCell.Offset(1, 3))
Worksheets("BAL-N").Select
Range("b3").Select
While ActiveCell.Value <> Empty 'ActiveCell.Value <> code
If ActiveCell.Value = code Then
If debit <> 0 Then
ActiveCell.Offset(0, 2).Value = Val(debit)
Else
ActiveCell.Offset(0, 3).Value = Val(credit)
End If
End If
ActiveCell.Offset(1, 0).Select
Wend
Sheets("A").Select
ActiveCell.Offset(1, 0).Select
Wend
End Sub

merci

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
La nouvelle zone de saisie des messages du forum offre la possibilité de coller du code.
Ce serait bien de l'utiliser !
Cela permetrait de conserver l'indentation du code sans lequel il devient rébarbatif de lire ces lignes sans couleurs.

Code refaçonné :
  Sub Bouton1_QuandClic() 
    Dim code, debit, credit As String 
' Cette ligne ^^ ne signifie pas que chaque variable sera de type String
' Il faut répéter le type pour chacune
' Pourquoi dimensionner en String alors que tu mets des chiffres dedans ?
    worksheets("A").Select 
    Range("a2").Select 
    While ActiveCell.Value <> "" 
      code = ActiveCell.Value 
      debit = Val(ActiveCell.Offset(0, 2)) 
      credit = Val(ActiveCell.Offset(1, 3)) 
      Worksheets("BAL-N").Select 
      Range("b3").Select 
      While ActiveCell.Value <> Empty 'ActiveCell.Value <> code 
        If ActiveCell.Value = code Then 
          If debit <> 0 Then 
            ActiveCell.Offset(0, 2).Value = Val(debit) 
          Else 
            ActiveCell.Offset(0, 3).Value = Val(credit) 
          End If 
        End If 
        ActiveCell.Offset(1, 0).Select 
      Wend 
      Sheets("A").Select 
      ActiveCell.Offset(1, 0).Select 
    Wend 
  End Sub


Pour tes histoires de "ça marche pas", pas le temps d'analyser un programme sans savoir ce que tu cherches à faire et d'en déduire les erreurs.
Apprends à débuguer avec les touches F9, F8 et la fenêtre de debug (Ctrl-G) ou le survol des variables avec la souris

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
3
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
28 juillet 2009

merci bcp ...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
[quote=règlement]11.
On pense à laisser un petit message lorsqu'un problème est résolu et à cliquer sur le bouton «réponse acceptée».

Ce bouton sert à valider la ou les réponses qui conviennent au problème indiqué. Il sert aussi de remerciement pour les membres qui ont apporté la/les bonnes réponses. Enfin une réponse validée est bien plus facile à retrouver lors de recherches sur le forum. N'oubliez pas qu'un forum ne sert pas qu'à poser sa question!/quote