Adapter if en while car possibilitées de deux résultats

Bonjour,

j'ai une macro qui me permet de récupérer des données financières dans ma base et fonctionnelle

la partie concernée ici:

    If ((Bud(kBg, 1) = Prj(kRp, 1)) And (Prj(kRp, 13) = "Active" Or Prj(kRp, 13) = "Negociation")) Then

            .Range("C" & kR) = Bud(kBg, 15)      
            .Range("D" & kR) = Bud(kBg, 6)        
            .Range("E" & kR) = Bud(kBg, 15) - Bud(kBg, 6) - Bud(kBg, 10) 
            .Range("F" & kR) = Bud(kBg, 10)
            .Range("G" & kR) = Bud(kBg, 9)
            .Range("G" & kR).NumberFormat = "0.00%"
             End If
                   

seulement voila je dois la modifier car je n'ai pas forcement qu'une ligne à reporter mais parfois deux désormais

aussi ce n'est plus un if mais un while que je pense devoir utiliser

mais comment l'indiquer afin de respecter la meme condition?

Merci par avance pour votre assistance

bonne journée

bonjour,

ce serait vraiment plus simple si tu nous mettais un classeur et des explications de ce que tu veux faire. (après 392 messages tu devrais l'avoir intégré)

Ici on doit deviner ce que représentent KBg, Krp, et KR et comment ils varient. mais à première vue pas besoin de modifier le if en while, seulement incrémenter Kr quand la condition est vraie.

Bonjour,

oui veuillez m'excuser:

Bud = Worksheets("Budget").ListObjects("T_Budget").DataBodyRange.Value

Prj = Worksheets("Projects").ListObjects("Projects").DataBodyRange.Value

kRp = 1 '--- n° ligne Projet

kBg = 1 '--- n° ligne Budget

If ((Bud(kBg, 1) = Prj(kRp, 1)) And (Prj(kRp, 13) = "Active" Or Prj(kRp, 13) = "Negociation")) Then

Si id du projet de l'onglet budget correspond à l'id projet de l'onglet projet et si l'id du projet à pour statut actif ou negociation

              Do
                If kBg < UBound(Bud) And Bud(kBg, 1) < Prj(kRp, 1) Then
                    kBg = kBg + 1
                Else
                    Exit Do '--- sort de la boucle: n° projet atteint ou dépassé, ou dépassement plage
                End If
           Loop

           If ((Bud(kBg, 1) = Prj(kRp, 1)) And (Prj(kRp, 13) = "Active" Or Prj(kRp, 13) = "Negociation")) Then

            .Range("C" & kR) = Bud(kBg, 15)     
            .Range("D" & kR) = Bud(kBg, 6)       
            .Range("E" & kR) = Bud(kBg, 15) - Bud(kBg, 6) - Bud(kBg, 10)  
            .Range("F" & kR) = Bud(kBg, 10)
            .Range("G" & kR) = Bud(kBg, 9)
            .Range("G" & kR).NumberFormat = "0.00%"
             End If
              

a défaut de pouvoir m'éclairer en l'état je préparerais un fichier exemple

merci par avance

Bonjour,

personne pour m'éclairer svp?

j'ai fais quelques tentatives sans succès...

En gros je ne sais pas comment mdofier le If ((Bud(kBg, 1) = Prj(kRp, 1)) And (Prj(kRp, 13) = "Active" Or Prj(kRp, 13) = "Negociation")) qui ne me renvoi qu'un seul résutlat car que dans certains cas je peux en avoir deux

avec while ca bug total e je suis obligé d'interrompe

avec for i=1 to 2 ca n'a aucun impact

Rechercher des sujets similaires à "adapter while possibilitees deux resultats"