IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]Petit souci avec une boucle


Sujet :

Macros et VBA Excel

  1. #1
    Mou
    Mou est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 69
    Points : 42
    Points
    42
    Par défaut [VBA-E]Petit souci avec une boucle
    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    For i = 95 To fin
        facility_ID = Cells(i, 4)
        ligne = 0
        Do Until ligne Is Error
            With Worksheets("CLO").Range("IP1:IR25000")
            Set ligne = .Find(facility_ID, LookIn:=xlValues)
            ligneLoan = ligne.Row
            Range("IS" & ligneLoan) = "=blp(IP" & ligneLoan & ",IS1)"
            Find.Next
     
            End With
         Loop
    Next i
    En fait j'aimerai que le programme recherche dans une plage de données une donnees et mette a cote ma formule et recherche le suivant etc... jusqu'à ce qu'il n'en trouve plus...

    Un ti coup de main ?

    Merchi

    Mourad

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Dans ton code, tu fixes la recherche sur 3 colonnes.
    Citation Envoyé par Par ailleurs, tu
    recherche dans une plage de données une donnees et mette a cote ma formule
    Tu es sûr de vouloir faire ça ?
    A+

    Désolé, j'ai mal lu, ta donnée va bien toujours sur la colonne IS.
    par contre, ta recherche se fait sur 3 colonnes.

  3. #3
    Mou
    Mou est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 69
    Points : 42
    Points
    42
    Par défaut
    C'est pas ce que j'ai voulu dire.... J'ai du mal m'exprimer. J'ai un peu avancer dans mon code... Par contre j 'ai un probleme, je ne sais pas comment le faire passer à la donnée suivante..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    For i = 95 To fin
        lChannelNum = DDEInitiate("Blp", "S")
     
        facility_ID = Cells(i, 4)
        ligne = 1
        Do
            With Worksheets("CLO").Range("IP1:IR25000")
                Set ligne = .Find(facility_ID, LookIn:=xlValues)
                ligneLoan = ligne.Row
                sRequeststr = Range("IP" & ligneLoan).Value & ",[security_type, ln_tranche]"
                Range("IS" & ligneLoan & ":IT" & ligneLoan) = DDERequest(lChannelNum, sRequeststr)
     
     
     
            End With
         Loop While Not ligne Is Nothing
     
     DDETerminate lChannelNum
     
    Next i
    Si j'essaie de mettre un .findnext a la place de mon .find et ben ca bug...

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Essaie comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub RechercheSimple()
    Dim facility_ID As Variant, c As Variant
    Dim FlRange As Range
        facility_ID = Cells(i, 4).value
        Set FlRange = Worksheets("CLO").Range("IP1:IR25000")
        With FlRange  'plage de recherche
            Set c = .Find(facility_ID, LookIn:=xlValues)
            If Not c Is Nothing Then 'Si une donnée répondant au nom de Nom...
                Range("IS" & c.Row) = "=blp(IP" & ligneLoan & ",IS1)"
            End If
        End With
        Set c = Nothing
    End Sub

  5. #5
    Mou
    Mou est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 69
    Points : 42
    Points
    42
    Par défaut
    Juste une petite question... pourquoi le next ne se fait pas dans le second code que j'ai envoyé ?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Quelle valeur a ton "Fin" ?
    Je pense que ça vient de là. Tu as essayé mon code ?

  7. #7
    Mou
    Mou est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 69
    Points : 42
    Points
    42
    Par défaut
    Je n'ai pas encore essayé.... ca me fait reprendre pas mal de choses quand meme. Donc je cherche encore un peu avec mon code et prendrait le tien si je n'y arrive pas.

  8. #8
    Mou
    Mou est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 69
    Points : 42
    Points
    42
    Par défaut
    Bon merci je vais le voir de suite.... c'est juste que ca m'enerve de ne pas comprendre pourquoi l'autre truc ne marche pas. Je dois avoir un probleme de raisonnement dans le code et ca va se reproduire... Voila mais merci m'sieur !

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu as vérifié la valeur de Fin ? Je fais une fixation mais essaie en mettant un point d'arrêt sur la ligne suivant ton for i = 95 to fin et vérifie la valeur.

  10. #10
    Mou
    Mou est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 69
    Points : 42
    Points
    42
    Par défaut
    Oui la valeur de mon fin est correct elle correspond d'ailleurs dans ce cas à 203.

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ok, allons tant mieux.
    J'ai adapté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub RechercheDe95àFin()
    Dim facility_ID As Variant, c As Variant, i as long
    Dim FlRange As Range
        For i = 95 To Fin
            lChannelNum = DDEInitiate("Blp", "S")
            facility_ID = Cells(i, 4)
            Set FlRange = Worksheets("CLO").Range("IP1:IR25000")
            With FlRange  'plage de recherche
                Set c = .Find(facility_ID, LookIn:=xlValues)
                If Not c Is Nothing Then 'Si une donnée répondant au nom de Nom...
                    Range("IS" & c.Row) = "=blp(IP" & ligneLoan & ",IS1)"
                End If
            End With
            Set c = Nothing
        Next
    End Sub
    ... j'espère que c'est bien ce que tu veux faire... ce coup-ci

  12. #12
    Mou
    Mou est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 69
    Points : 42
    Points
    42
    Par défaut
    Ah ben non ... lol Ca marche pas !

    Le code que tu m' as filé ne me permet pas de chercher toutes les cellules...... En fait des qu il en trouve une, il zappe !

    En fait j ai un facility_ID, le but est qu'il recherche dans une table de correspondance tous les Loans_ID correspondant et que juste à cote il me mette les formules que je veux....

    Une idee ?

    Merci

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si je comprends bien le problème, tu peux avoir à trouver plusieurs fois la même occurence (facility_ID) ?
    Effectivement, je n'ai pas traité ça dans mon code
    Tu dis

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je réponds avant d'avoir ta réponse, je suis obligé "d'y aller "
    Teste ça (pas testé...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub RechercheDe95àFin()
    Dim facility_ID As Variant, c As Variant, i As Long
    Dim FlRange As Range
        For i = 95 To Fin
            lChannelNum = DDEInitiate("Blp", "S")
            facility_ID = Cells(i, 4)
            Set FlRange = Worksheets("CLO").Range("IP1:IR25000")
            With FlRange  'plage de recherche
                Set c = .Find(facility_ID, LookIn:=xlValues)
                'If Not c Is Nothing Then 'Si une donnée répondant au nom de Nom...
                    Do While Not c Is Nothing
                        Range("IS" & c.Row) = "=blp(IP" & ligneLoan & ",IS1)"
                        Set c = .FindNext
                    Loop
                'End If
                Set c = Nothing
            End With
        Next
    End Sub
    Tu dis quand même que je ne meure pas idiot

  15. #15
    Mou
    Mou est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 69
    Points : 42
    Points
    42
    Par défaut VBA - E : Petit Souci avec une boucle
    Bon rien ne marche et tout fout le camps....

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Et si tu mettais toute la macro, là j'ai l'impression qu'on n'a qu'un bout.
    Essaie ça... à tout hasard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub RechercheDe95àFin()
    Dim facility_ID As Variant, c As Variant, i As Long
    Dim FlRange As Range
    Dim OldNoLigne
        For i = 2 To 50
            'lChannelNum = DDEInitiate("Blp", "S")
            facility_ID = Cells(i, 1)
            Set FlRange = Worksheets("feuil1").Range("A2:A50")
            With FlRange  'plage de recherche
                Set c = .Find(facility_ID, LookIn:=xlValues)
                OldNoLigne = c.Row
                If Not c Is Nothing Then 'Si une donnée répondant au nom de Nom...
                    Do While Not c Is Nothing
                        Range("IS" & c.Row) = "=blp(IP" & ligneLoan & ",IS1)"
                        Set c = .FindNext
                        If c.Row <= OldNoLigne Then Exit Do
                        OldNoLigne = c.Row
                    Loop
                End If
                Set c = Nothing
            End With
        Next
    End Sub
    La difficulté est de ne pas pouvoir tester

  17. #17
    Mou
    Mou est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 69
    Points : 42
    Points
    42
    Par défaut
    Ah frustration .... ben oui je sais que c est pas evident de ne pas pouvoir le tester... En tout cas merci d ton coup de main !

  18. #18
    Mou
    Mou est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 69
    Points : 42
    Points
    42
    Par défaut
    J ai utilisé une tite astuce pour contourner le probleme en redefinissant la plage à tester....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    For i = 95 To fin
        lChannelNum = DDEInitiate("Blp", "S")
     
        facility_ID = Cells(i, 4)
     
        ligneLoan = 0
        Do
     
        With Worksheets("CLO").Range("IP" & ligneLoan + 1 & ":IR25000")
            Set ligne = .Find(facility_ID, LookIn:=xlValues)
     
                    ligneLoan = ligne.Row
                    sRequeststr = Range("IP" & ligneLoan).Value & ",[security_type, ln_tranche]"
                    Range("IS" & ligneLoan & ":IT" & ligneLoan) = DDERequest(lChannelNum, sRequeststr)
     
                    On Error Resume Next
     
        End With
     
     
       Loop While Not ligne Is Nothing
     
     DDETerminate lChannelNum
     
    Next i
    Merci en tout cas pour les conseils...

  19. #19
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut, j'ai ce petit bout de code qui traine, flemme de reprendre tes termes, mais il marche tres bien. il inscrit + dans la cellule a coté quand il trouve *inc, et il traite toutes les occurences. yapuka adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub remp2()
    With Worksheets("Boucle").Range("a:a")
        Set c = .Find("*INC", LookIn:=xlValues)
     
    If Not c Is Nothing Then
        firstaddress = c.Address
           Do
                c.Offset(0, 1) = "+"
                Set c = .FindNext(c)
           Loop While Not c Is Nothing And Not firstaddress = c.Address
    End If
    End With
    End Sub

  20. #20
    Mou
    Mou est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 69
    Points : 42
    Points
    42
    Par défaut
    Set c = .FindNext(c)

    tu es oblige de mettre le c apres le findnext ?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.2] [PHP-JS] petit souci avec une boucle simple
    Par gtraxx dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2009, 15h26
  2. soucis avec une boucle
    Par yahi.jye dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2008, 14h05
  3. Petit soucis avec une requête
    Par Jeetiz dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/02/2007, 14h53
  4. [VBA-E] Petit souci avec boites de dialogues
    Par SybVicious dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/09/2006, 21h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo