Boucle for avec une plage de cellule

Fermé
aude2222 Messages postés 14 Date d'inscription mardi 28 mars 2017 Statut Membre Dernière intervention 30 mars 2017 - 29 mars 2017 à 10:38
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 - 29 mars 2017 à 13:13
Bonjour,

je voulais savoir si c possible de faire une boucle for avec une plage de cellule sur vba sachant que quand je déclare ma variable elle est en range

Dim i As Range
Dim j As Range

Set i = Range("G2:G1515")
Set j = Range("U2:U1515")

For i = Cells(G2) To Cells(1000) 'boucle pour parcourir les cellules de la date de souscription
For j = 2 To 1000 'boucle pour parcourir les cellules de la date de survenance
'condition if
next j
next i

la ma boucle for ne marche pas
merci de votre aide
A voir également:

1 réponse

cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 496
29 mars 2017 à 11:04
Tu dis LA boucle for ne fonctionne pas mais tu en a 2.

Du coup, on ne peut pas savoir laquelle est incriminée. Je pense que c'est i cela dit.

Je connais plus VB que VBA mais aller jusqu'à 1000 cellules n'est peut être pas une bonne idée (surtout si le tableau ne va pas jusque là).

A vérifier si ceci est fonctionnel (ça le serait en VB je pense)

For i = Cells(G2) To UBound(Cells)

ou sinon

For i = Cells(G2) To UBound(Cells(G2))

Dis moi si ça fonctionne ^^
0
aude2222 Messages postés 14 Date d'inscription mardi 28 mars 2017 Statut Membre Dernière intervention 30 mars 2017
29 mars 2017 à 11:09
Sa ne marche pas
il me dit ça: Erreur définie par l'application ou par l'objet, Office Shared [vblr6.chm1000095]
0
aude2222 Messages postés 14 Date d'inscription mardi 28 mars 2017 Statut Membre Dernière intervention 30 mars 2017
29 mars 2017 à 11:12
merci pour ton aide
j'ai envie de calculer le nombre de ligne après plusieurs condition
pour i parcourant la plage de la date de souscription et pour j parcourant la plage de la date de survenance
si la cellule de la date de souscription est égal a janvier 2013 et si la date de survenance c'est janvier 2013 alors je compte le nombre de ligne qu'il y'a et je met la solution dans la cellule E2
voila ceux que jai fait mais a partir de la boucle for sa ne veut pas marcher


Dim Nombre_Sinistre_Declare As Integer
Dim Date_Souscription_Adhésion As Range
Dim Date_Survenance As Range
Dim somme As Long
Dim nblignes As Integer
Dim i As Integer
Dim j As Integer

Set Date_Souscription_Adhésion = Range("G2:G1515")
Set Date_Survenance = Range("U2:U1515")
Set Numéro_Police = Range("A2:A1515")

Worksheets("Sinistre").Activate

For i = Cells("G2") To Cells("G1515") 'boucle pour parcourir les cellules de la date de souscription
For j = 2 To 1000 'boucle pour parcourir les cellules de la date de survenance
If Year(Date_Souscription_Adhésion.Cells) = 2013 Then
If Month(Date_Souscription_Adhésion.Cells) = 1 Then
If Year(Date_Survenance.Cells) = 2013 Then
If Month(Date_Survenance.Cells) = 1 Then
nblignes = Range("U2", Range("U1048576").End(xlUp)).Rows.Count
End If
End If
End If
End If
next i
next j
0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 496
29 mars 2017 à 11:47
Sans données dans le tableau, ça donne des erreurs. Peux-tu me donner un echantillon de son contenu ?
0
aude2222 Messages postés 14 Date d'inscription mardi 28 mars 2017 Statut Membre Dernière intervention 30 mars 2017 > cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021
29 mars 2017 à 11:51
mon classeur est sous cette forme
je n'arrive pas a déposer le fichier

Date_Souscription_Adhésion Date_Survenance
04/07/2015 23/07/2015
06/06/2013 23/08/2013
18/06/2014 31/03/2015
28/06/2016 04/07/2016
27/05/2014 04/04/2015
21/06/2013 06/03/2014
08/08/2015 09/10/2015
01/11/2013 12/04/2014

jai changer de code mais la condition if ne veut pas marcher auriez vous une idée?

Sub test()

Dim Date_Souscription_Adhésion As Range 'définit les variables
Dim Date_Survenance As Range
Dim i As Integer
Dim j As Integer
Dim DernLigne1 As Long
Dim DernLigne2 As Long

Worksheets("Feuil1").Activate

DernLigne1 = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row 'définit la dernière ligne colonne G
DernLigne2 = Sheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row 'définit la dernière ligne colonne U

Set Date_Souscription_Adhésion = Sheets("Feuil1").Range("A2:A" & DernLigne1) 'définit la colonne A
Set Date_Survenance = Sheets("Feuil1").Range("B2:B" & DernLigne2) 'définit la colonne B

For i = 1 To Date_Souscription_Adhésion.Rows.Count ' boucle sur la colonne G
For j = 1 To Date_Survenance.Rows.Count ' boucle sur la colonne U

If Year(Date_Souscription_Adhésion.Cells) = "2013" Then
If Month(Date_Souscription_Adhésion.Cells) = 1 Then
If Year(Date_Survenance) = 2013 Then
If Month(Date_Survenance) = 1 Then
nblignes = Range("A2", Range("A7").End(xlUp)).Rows.Count 'compter le nombre de ligne
End If
End If
End If
End If
Next j
Next i

End Sub

0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 496
29 mars 2017 à 12:44
Je cherche ...

Ce code plante Excel chez moi, étrange ...
0