Perte de valeur de ma variable lors de FindNext

Bonjour,

J'ai crée dans le fichier ci-joint une macro.

J'ai une erreur 91 "Variable objet ou variable de bloc with non défini: je vois avec l'espion que la variable rngElligible n'a plus de valeur lors de Set rngElligible = .FindNext(rngElligible)

Lorsque je mets la partie de code entre les rangées d'étoiles en commentaire, le FindNext fonctionne.

Merci de votre aide.

P.

Bonjour,

Il y a une recherche qui donne l'adresse Z4. (pas à pas ... touche F8)

Puis la ligne ci-bas écrit dans Z4 ... l'information n'est plus la même ... d'où l'erreur plus loin.

               Cells(rngElligible.Row, Range("N°_quartet_producteur_mois_année_client").Column).Value = Cells(rngElligible.Row, Range("max_par_producteur_par_année_par_mois").Column).Value + 1   'cette cellule prend la valeur de la même ligne et de la colonne "max des N° de factures pour ce producteur"

ric

Bonsoir ric,

je ne suis pas sur de comprendre: de quelle recherche parles-tu? Quand tu écris "Linformation n'est plus la même", je ne te suis pas!

Merci de ton aide.

P.

Bonjour,

Dis-moi si ceci donne le résultat escompté ...

Private Sub essai_boucles_imbriquées()

'deux boucles imbriquées:
'1ere boucle: je cherche les "eligible facture mensuelle directe prod-client" dans BDD VENTES dans la colonne eligibilite: quand j'en trouve un
'2eme boucle: je mets la valeur du quartet en mémoire, et lui attribue un N° de facture si n'en a pas:
'ensuite je cherche la valeur du quartet mis en mémoire ds la plage BDD VENTES colonne "Concatener_Producteur_Mois_année_client": si trouve qqchose=>attribue la valeur du N° d efacture qui avai tété mise en mémoire
   Dim rngElligible As Range   'plage de recherche de l'eligibilite
   Dim strPremierEligibleTrouve As String   'valeur de l'adresse de la premiere eligibilite trouvée
   Dim strQuartetAtrouver As String
   Dim intNumFactureProdClient As Integer
   Dim rngQuartetSpotted As Range   'c'est le range trouvé dt la valeur est strQuartetTrouve
   Dim strPremierQuartetSpotted As String   'premierr occurence trouvée

   On Error Resume Next

   With wksBddVentes.Range("Tableau2[Eligibilite FacturationDirecteProducteurClient]")
      Set rngElligible = .Find("eligible facture mensuelle directe prod-client")   'on cherche lles valeurs elligibles
      If Not rngElligible Is Nothing Then
         strPremierEligibleTrouve = rngElligible.Address   'la premiere valeur trouvée est mise en mémoire pour limiter la boucle plus tard
         Do
            '********************************

            'on va spotter une valeur de N°nulle, on lui attribue un N° et on complete ts les N° du même quartet
            If Cells(rngElligible.Row, Range("N°_quartet_producteur_mois_année_client").Column).Value = "" Then   'si la cellule du N° de facture est vide alors

               Cells(rngElligible.Row, Range("N°_quartet_producteur_mois_année_client").Column).Value = Cells(rngElligible.Row, Range("max_par_producteur_par_année_par_mois").Column).Value + 1   'cette cellule prend la valeur de la même ligne et de la colonne "max des N° de factures pour ce producteur"
               'une variable prend la valeur de ce N° de facture, une autre la valeur du quartet et on cherche maintenant si le quartet auquel on vient d'attribuer
               'le N° existe sur d'autres lignes, auquel cas ne N° d efacture prendra la valeur d ela variable intNumFactureProdClient
               'une variable prend la valeur du N° de quartet nouvellement attribué
               intNumFactureProdClient = Cells(rngElligible.Row, Range("N°_quartet_producteur_mois_année_client").Column).Value
               'une autre variable prend la valeur du quartet: on recherche ce quartet, si on le trouve, son N° de afctrue sera celui d ela variable précédente
               strQuartetAtrouver = Cells(rngElligible.Row, Range("Concatener_Producteur_Mois_année_client").Column).Value

               'on cherche dans la colonne Concatener_Producteur_Mois_année_client
               Set rngQuartetSpotted = wksBddVentes.Range("Tableau2[Concatener Producteur-Mois_année_client]").Find(strQuartetAtrouver, LookIn:=xlValues, lookAt:=xlWhole)   'on cherche strQuartetArouver soit la valeur du quartet à laquelle a ete affecté le N°de facture:le range trouvé est rngQuartetTrouve
               If Not rngQuartetSpotted Is Nothing Then   'la cellule de la même ligne et de la colonne Range("N°_quartet_producteur_mois_année_client").Column prendra la valeur de la variable intNumFactureProdClient
                  strPremierQuartetSpotted = rngQuartetSpotted.Address
                  Do
                     Cells(rngQuartetSpotted.Row, Range("N°_quartet_producteur_mois_année_client").Column).Value = intNumFactureProdClient
                     Set rngQuartetSpotted = wksBddVentes.Range("Tableau2[Concatener Producteur-Mois_année_client]").FindNext(rngQuartetSpotted)
                  Loop While rngQuartetSpotted.Address > strPremierQuartetSpotted

               End If
            End If
            '****************
            Set rngElligible = .Find("eligible facture mensuelle directe prod-client")   'on cherche lles valeurs elligibles
            Set rngElligible = .FindNext(rngElligible)
         Loop While Not rngElligible Is Nothing And rngElligible.Address <> strPremierEligibleTrouve
      End If
   End With
End Sub

ric

Bonjour ric,

ça marche nickel.

J'ai vu la modif.

Merci beaucoup!

P.

Bonjour,

Bienvunue

ric

Rechercher des sujets similaires à "perte valeur variable lors findnext"