comment faire une routine pour incrementer l'adresse d'une cellule

comment faire une routine pour incrementer l'adresse d'une cellule - VB/VBA/VBS - Programmation

Marsh Posté le 04-09-2013 à 17:19:40    

Bonjour à tous,
 
je suis confronté à une petite difficulté.
 
J'ai créé une petite macro pour gérer le nombre d'heure avant le prochain entretient de plusieurs véhicules en fonction du nombre de jours écoulés et de la moyenne de ces heures par jour.
 

Code :
  1. Sub auto_open()
  2.  
  3.     If DateDiff("d", Range("B2" ), Range("A16" )) = 0 Then
  4.        
  5.     Else
  6.         Range("E2" ) = Range("C2" ) + DateDiff("d", Range("B2" ), Range("A16" )) * Range("D2" )
  7.   End If
  8.     If Range("E2" ) - Range("C2" ) >= 350 Then
  9.          Range("F2" ) = Range("C2" ) + 400 - Range("E2" )
  10.          Call AfficheBlocNote(Range("A2" ))
  11.     Else
  12.          Range("F2" ) = Range("C2" ) + 400 - Range("E2" )
  13.   End If
  14. End Sub


 
De ce coté là tout fonctionne très bien, mais j'aimerai créer un système de boucle pour éviter de répéter ce code pour chaque ligne de mon tableau.
j'ai essayé avec la fonction:  
 

Code :
  1. Dim I As Long
  2. for I= 2 to 20
  3. if range("$B$I" )...

 
 
Et plein de petites choses de même genre mais rien ne fonctionne, j'ai eu différent messages d'erreur comme:
"erreur d’exécution "1004": erreur définie par l'application ou par l'objet." et d'autre dont je n'ai plus souvenir.
(c'est dans ce genre de cas que je regrette ce bon vieux "C" ) :pfff:  
 
J'ai déjà fais des recherches mais n'ai rien trouvé de très concluant, donc j’espère que l'un d'entre vous aura une petite combine ou bout de code pour m'aider ça me simplifierai pas mal les choses en cas d'ajout de véhicule (et surtout à mon back to back qui n'y connais rien en prog ^^)
 
Sur ceux je vous souhaite une bonne fin de journée et merci à ceux qui se pencheront sur mon problème.
 
Bye  
 

Reply

Marsh Posté le 04-09-2013 à 17:19:40   

Reply

Marsh Posté le 04-09-2013 à 21:55:14    

 
           Bonjour,
 
           voir la propriété  Cells  pour référencer une cellule par un numéro de ligne et de colonne …
 

Message cité 1 fois
Message édité par Marc L le 04-09-2013 à 21:57:22
Reply

Marsh Posté le 05-09-2013 à 12:29:58    

Marc L a écrit :

 
           Bonjour,
 
           voir la propriété  Cells  pour référencer une cellule par un numéro de ligne et de colonne …
 


 
salut merci pour ta réponse,  ce n'est pas celle que j'avais espéré mais elle m'a permis de trouver ce que je chercher via l'aide VBA.
 
je vous laisse le code au cas ou ça pourrait servir a quelqu'un ;)
 

Code :
  1. Private Sub Workbook_Open()
  2.     For Counter = 2 To 13
  3.    
  4.     If DateDiff("d", Cells(Counter, 2), Range("A16" )) = 0 Then
  5.    
  6.     Else
  7.         Cells(Counter, 5) = Cells(Counter, 3) + DateDiff("d", Cells(Counter, 2), Range("A16" )) * Cells(Counter, 4)
  8.        
  9.   End If
  10.     If Cells(Counter, 5) - Cells(Counter, 3) >= 350 Then
  11.          Cells(Counter, 6) = Cells(Counter, 3) + 400 - Cells(Counter, 5)
  12.          Call AfficheBlocNote(Cells(Counter, 1))
  13.        
  14.     Else
  15.          Cells(Counter, 6) = Cells(Counter, 3) + 400 - Cells(Counter, 5)
  16.        
  17.   End If
  18. Next Counter
  19. End Sub


 
bonne journée à tous et merci encore

Reply

Marsh Posté le 05-09-2013 à 15:26:22    

 
           Voici le code corrigé des redondances donc plus rapide :
 

Code :
  1. Private Sub Workbook_Open()
  2.     Application.ScreenUpdating = False
  3.     For R& = 2 To 13
  4.         D& = DateDiff("d", Cells(R, 2).Value, [A16].Value)
  5.         If D Then Cells(R, 5).Value = Cells(R, 3).Value + D * Cells(R, 4).Value
  6.         Cells(R, 6).Value = Cells(R, 3).Value + 400 - Cells(R, 5).Value
  7.         If Cells(R, 5).Value - Cells(R, 3).Value >= 350 Then AfficheBlocNote Cells(R, 1)
  8.     Next
  9.     Application.ScreenUpdating = True
  10. End Sub

 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed