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 :

Besoin d'aide pour faire une boucle loop sur une macro [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 132
    Points : 61
    Points
    61
    Par défaut Besoin d'aide pour faire une boucle loop sur une macro
    Bonjour les développeziens et les developpeziennes.

    Je voudrai faire une boucle sur cette macro

    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
    Sub renomer_tlssyp()
     
    ' renomer_tlssyp Macro
     
     
        Windows("Classeur1").Activate
        Sheets("Montants facturés par carte").Select
        Columns("E:E").Select
        selection.Find(What:="TLSSYP", After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        ActiveCell.Offset(rowOffset:=0, columnOffset:=-4).Activate
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[4],Codex!C:C[2],2,FALSE)"
        selection.Copy
        ActiveCell.Offset(rowOffset:=0, columnOffset:=4).Activate
        selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveCell.Offset(rowOffset:=0, columnOffset:=-4).Activate
        Application.CutCopyMode = False
        selection.ClearContents
     
    End Sub
    Et je ne sais pas comment faire.

    J'explique un peu plus ce que je cherche a faire de cette boucle.

    Je voudrai que tant que la macro trouve TLSSYP dans la colonne elle boucle et s'arrête des qu'elle ne trouve plus de TLSSYP.

    j'aurai besoin de vos lumières pour cette solution ^^ je vous remercie par avance de votre aide que vous allez m'apporter

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,

    Fais une recherche sur la méthode .find (findnext en l'occurence)

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 132
    Points : 61
    Points
    61
    Par défaut
    Merci de ton aide Fvandermeulen,

    Peux tu m'expliquer un peu plus je débute dans ce monde et je ne te cache pas que je n'y comprend pas grand chose.

  4. #4
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Re,
    Vois le code ci-dessous, largement inspiré de l'explication de l'aide en VBA (touche F1).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub FindMethod()
    Dim MaRech As Range, FirstAdd As String
        With ActiveSheet.Range("A1:A10") 'défini la plage de recherche
            Set MaRech = .Find("TLSSYP", LookIn:=xlValues)
            If Not MaRech Is Nothing Then
                FirstAdd = MaRech.Address
                Do
                    'Faire ce que tu veux ici, pour l'exemple écrit trouvé dans la colonne B
                    Cells(MaRech.Row, MaRech.Column + 1) = "Trouvé"
                    Set MaRech = .FindNext(MaRech)
                Loop While Not MaRech Is Nothing And MaRech.Address <> FirstAdd
            End If
        End With
    End Sub
    A+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 132
    Points : 61
    Points
    61
    Par défaut
    Merci de ton aide précieuse Fvandermeulen d^_^b

    Ça Fonctionne bien.

    Mais des que je lui demande de copier le résultat trouver pour le remplacer ca ne fonctionne plus.

    Voici le code peut être que ca te parleras plus.

    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
    Sub renomer_tlssyp()
    '
    ' renomer_tlssyp Macro
     
     
    Dim MaRech As Range, FirstAdd As String
        With ActiveSheet.Range("E:E") 'défini la plage de recherche
            Set MaRech = .Find("TLSSYP", LookIn:=xlValues)
            If Not MaRech Is Nothing Then
                FirstAdd = MaRech.Address
                Do
                    'Faire ce que tu veux ici, pour l'exemple écrit trouvé dans la colonne B
                    Cells(MaRech.Row, MaRech.Column - 4) = "=VLOOKUP(RC[4],Codex!C:C[2],2,FALSE)"
                    selection.Copy
        ActiveCell.Offset(rowOffset:=0, columnOffset:=4).Activate
        selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveCell.Offset(rowOffset:=0, columnOffset:=-4).Activate
        Application.CutCopyMode = False
        selection.ClearContents
                    Set MaRech = .FindNext(MaRech)
                Loop While Not MaRech Is Nothing And MaRech.Address <> FirstAdd
            End If
        End With

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 132
    Points : 61
    Points
    61
    Par défaut
    Encore merci Fvandermeulen de tes lumières, tu m'as fortement aidé

    Voici mon code final après plusieurs teste

    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
    Sub autre_test()
     
    Sheets("Montants facturés par carte").Select
    With Worksheets("Montants facturés par carte").Range("e:e")
        Set c = .Find("TLSSYP", LookIn:=xlValues)
     
        If Not c Is Nothing Then
     
            Do
                Cells(c.Row, c.Column - 4) = "=VLOOKUP(RC[4],Codex!C:C[2],2,FALSE)"
                c.Value = Cells(c.Row, c.Column - 4)
                Set c = .FindNext(c)
            Loop While Not c Is Nothing
        End If
     
        Columns("A:A").ClearContents
     
    End With
     
    End Sub
    C'est bien plus court et plus joli que mon 1er code

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 20/05/2008, 10h25
  2. Besoin d'aide pour faire une string formatée
    Par fab032 dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2008, 14h37
  3. [MySQL] Besoin d'aide pour faire une boucle
    Par plex dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 15/04/2008, 13h47
  4. Besoin d'aide pour faire une procédure stockée
    Par PoichOU dans le forum SQL
    Réponses: 17
    Dernier message: 30/04/2007, 17h55
  5. [VBA-E]besoin d'aide pour faire une boucle
    Par mikazounette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/04/2006, 14h04

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