Code VBA à rectifier

cs_emab Messages postés 3 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 28 juillet 2009 - 28 juil. 2009 à 13:56
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 29 juil. 2009 à 08:53
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 juil. 2009 à 14:34
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)
0
cs_emab Messages postés 3 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 28 juillet 2009
28 juil. 2009 à 22:47
merci bcp ...
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
29 juil. 2009 à 08:53
[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
0
Rejoignez-nous