Boucle for avec une plage de cellule

aude2222 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
cs_PaTaTe Messages postés 1471 Date d'inscription   Statut Contributeur Dernière intervention   -
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

1 réponse

  1. cs_PaTaTe Messages postés 1471 Date d'inscription   Statut Contributeur Dernière intervention   503
     
    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
    1. aude2222 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
       
      Sa ne marche pas
      il me dit ça: Erreur définie par l'application ou par l'objet, Office Shared [vblr6.chm1000095]
      0
    2. aude2222 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    3. cs_PaTaTe Messages postés 1471 Date d'inscription   Statut Contributeur Dernière intervention   503
       
      Sans données dans le tableau, ça donne des erreurs. Peux-tu me donner un echantillon de son contenu ?
      0
    4. aude2222 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   > cs_PaTaTe Messages postés 1471 Date d'inscription   Statut Contributeur Dernière intervention  
       
      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
    5. cs_PaTaTe Messages postés 1471 Date d'inscription   Statut Contributeur Dernière intervention   503
       
      Je cherche ...

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