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 :

Arrét de boucle définie


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club

    Femme Profil pro
    étudiante
    Inscrit en
    Mars 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : étudiante
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 123
    Points : 50
    Points
    50
    Billets dans le blog
    1
    Par défaut Arrét de boucle définie
    Bonjour les amis j'ai un code qui est réalisé par Thebenoit59 membre au forum et que je remercie beaucoup pour son aide pour le réussir et maintenant
    je vous contacte pour faire des amélioration sur ce code

    1) on faite je veux fixé le nombre de fois que je veux ma boucle tourne dans la celule B4
    je veux que quand je clique sur le bouton simulation , que ma boucle tourne le nombre de fois que je vais lui fixé dans la cellule B4 (Nombre de boucle )

    2)la 2 éme chose que je veux modifié svp dans mon code c'est :
    -maintenant avant de cliqué dur le bouton simulation , les celulles B7:T7 sont vides
    -quand on clique sur le bouton simulation la cellule B7 ce rempli et aprés 2 seconde la cellule C7 se rempli jusqu'a T7 et une fois que T7 est rempli la boucle pour remplire la colonne X se lance
    - maintenant ce que je veux c'est que une fois que B7 est rempli on lance la boucle qui rempli la colonne X
    merci :D


    voila le code svp merci :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
    'Forumeur : bitissa1991
    'Auteur : TheBenoit59
    'Lien : http://www.developpez.net/forums/d1586740/logiciels/microsoft-office/excel/macros-vba-excel/macro-recherche-aleatoire-conditions/#post8643065
     
     
     
    Option Explicit
    Option Base 1
     
    Public Satisfait As Boolean
     
    Sub Choix_Aleatoire()
    Dim f As Worksheet: Set f = Sheets("Interface")
    Dim r, a, c
    Dim d As Object: Set d = CreateObject("scripting.dictionary")
    Dim i As Integer, j As Integer, n As Integer
     
    'On enregistre chaque ligne ayant la même clé
    r = f.[H13:Q51]
    For i = LBound(r) To UBound(r)
        d(r(i, 8)) = d(r(i, 8)) & i + 12 & ":"
    Next i
     
    'On boucle la colonne C
    j = 13
    Do While f.Cells(j, 3).Value <> ""
    Recommence_la_boucle:
        'On vérifie que la valeur existe dans le dictionnaire sinon on quitte la procédure
        If Not d.exists(f.Cells(j, 3).Value) Then MsgBox f.Cells(j, 3).Value & " non trouvé dans la colonne O", 16: f.Cells(j, 3).Activate: Exit Sub
        'On remet les items dans un tableau
        a = Split(d(f.Cells(j, 3).Value), ":")
        'On choisit une ligne au hasard dans le tableau
        n = a(Int(((UBound(a) - 1) * Rnd)))
        'Revenir au début si la ligne ne peut pas rester positive
        If f.Cells(n, "i").Value - f.Cells(n, "k").Value < 0 Then GoTo Recommence_la_boucle
        'On calcule la valeur en colonne R et on remplace également en colonne I
        f.Cells(n, "r").Value = f.Cells(n, "i").Value - f.Cells(n, "k").Value
        f.Cells(n, "i").Value = f.Cells(n, "r").Value
        'On note le poste choisi en colonne F pour exemple
        f.Cells(j, "f").Value = "Ligne " & n
        'On incrémente et on boucle
        j = j + 1
    Loop
        'Vérifie si toutes les valeurs ont été bouclées
        Satisfait = True
    End Sub
     
    Sub Plaque5_Cliquer()
    Dim UniteLavage As Long
    Dim d As Object
    Dim i As Integer, j As Integer, c As Variant
    Dim Nbre_Total_Boucl As Integer
    Dim Rng1, Rng2 As Range
    Dim Nb_Boucle As Integer
    Dim Arret As Boolean
    'Dim compt As Integer
    'compt = 1
        Satisfait = False
        With Sheets("Interface")
     
            'On vérifie s'il existe une valeur en B1
            If .[b1] = "" Then MsgBox "Insérer une valeur en B1", 16: Exit Sub
            'On enregistre la variable UniteLavage
            UniteLavage = .[b1]
            'On applique la valeur à la ligne 7
     
     
    'code pour le lancement des passe dans le tunel
        Arret = False: Nb_Boucle = 0
        'Do Until compt = 2
        If Range("B1").Value <> "" Then 'vérifie que B1 n'est pas vide
            Nbre_Total_Boucl = Columns(3).Find("*", , , , , xlPrevious).Row - 12
            Do While Arret = False
                DoEvents
                'Range("B7:T7").Value = "" 'réinitialise ton "tableau"
                i = 2 'valEUr de Ma première colonne du tableau
                Application.Wait Time + TimeSerial(0, 0, 2) 'attends 10 sec
     
                Do Until Range("T7") <> "" Or Arret = True 'conditionne la boucle jusqu'à la dernière colonne de ton tableau
     
                    If i > 2 Then Cells(7, i - 1).Value = Range("B1") 'mettre la valeur de B1 dans les cellule precedente
                    Cells(7, i).Value = Range("B1").Value 'mets ta valeurs dans la cellule de ton tableau
                    i = i + 1 'prochaine colonne
                    Application.Wait Time + TimeSerial(0, 0, 2) 'attends 10 sec
                    DoEvents
                Loop
                Range("B3") = Range("B3") + Range("T7")
     
                'If Range("B7") <> "" Then
     
     
                'boucle sur la colonne X
                Set Rng1 = Columns(24).Cells.Find(Range("C13").Offset(Nb_Boucle, 0).Value)
     
                If Rng1 Is Nothing Then
                    MsgBox Range("C13").Offset(Nb_Boucle, 0).Value & " non trouvé en colonne X"
               Else
                Rng1.Offset(1, 0).Value = Rng1.Offset(1, 0).Value + Range("B7").Value
                'End If
                End If
                Nb_Boucle = Nb_Boucle + 1
                If Nb_Boucle = Nbre_Total_Boucl Then Exit Do
            Loop
        Else
            MsgBox "B1 est vide !"
     
        End If
            '.Range("b7:t7").Value = UniteLavage
                'On démarre la procédure de choix aléatoire
                Choix_Aleatoire
                'Si Satisfait n'est pas atteint on quitte
                If Not Satisfait Then Exit Sub
            'On détermine la quantité de chaque Plat
            i = .[c65000].End(xlUp).Row
            Set d = CreateObject("scripting.dictionary")
                'On boucle la colonne C
                For j = 13 To i
                    'On incrémente chaque Plat pour déterminer le nombre de chaque
                    d(.Cells(j, 3).Value) = d(.Cells(j, 3).Value) + 1
                Next j
                For Each c In d.keys: d(c) = d(c) * UniteLavage: Next c
            'On boucle la colonne X
                'For j = 2 To 13 Step 2
                'If d.exists(.Cells(j, "x").Value) Then .Cells(j, "x").Offset(1).Value = d(.Cells(j, "x").Value)
               ' Next j
            'On ajoute la valeur à B1
            .[B3] = WorksheetFunction.Sum([x2:x13])
        End With
        'compt = compt + 1
     
    End Sub
    Images attachées Images attachées  

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    pas besoin de fichier, la première fois, d'autant que je pense que ton problème sera résolu facilement si tu publies ton code à améliorer

  3. #3
    Membre du Club

    Femme Profil pro
    étudiante
    Inscrit en
    Mars 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : étudiante
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 123
    Points : 50
    Points
    50
    Billets dans le blog
    1
    Par défaut
    c'est bon j'ai mis résolu dans tous les disscusion qui sont résolu désolé je savais pas

    merci

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    ?????
    ce n'est pas la remarque que je faisais, tu as lu ma signature alors que je te demande de cliquer sur "première fois" et de publier ton code

    D'autant que je ne connaissais pas tes autres discussions

  5. #5
    Membre du Club

    Femme Profil pro
    étudiante
    Inscrit en
    Mars 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : étudiante
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 123
    Points : 50
    Points
    50
    Billets dans le blog
    1
    Par défaut
    elle se trouve ou "première fois" ?

    moi j'ai publié le code dans le corps de mon message

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien bureau d'études
    Inscrit en
    Novembre 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien bureau d'études

    Informations forums :
    Inscription : Novembre 2015
    Messages : 118
    Points : 172
    Points
    172
    Par défaut
    Bonjour Bitissa. Bonjour Casefayere.

    Pourquoi ouvrir un nouveau sujet ?
    Par ailleurs, il serait sympa de signaler que le code a été réalisé par quelqu'un du forum ...

  7. #7
    Membre du Club

    Femme Profil pro
    étudiante
    Inscrit en
    Mars 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : étudiante
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 123
    Points : 50
    Points
    50
    Billets dans le blog
    1
    Par défaut
    bonjour thebenoit59
    est ce que tu veux dire que c'est mieux de laisser le sujet au méme endroit ou tu ma envoyer le code? moi je l'est mis ici psq je me suis dit comme je cherche a résoudre un autre probléme donc c'est mieux ouvrir une nouvelle discussion
    sinon est ce que ta pu stp voir ce que je voudrai faire comme modification sur le code ?



    c'est bon TheBenoit59 j'ai modifier mon message

  8. #8
    Membre du Club

    Femme Profil pro
    étudiante
    Inscrit en
    Mars 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : étudiante
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 123
    Points : 50
    Points
    50
    Billets dans le blog
    1
    Par défaut
    cc les amis est ce que vous avez pu comprendre ce que je veux faire ?

    aidez moi svp

    j'ai fais cette midification sur mon code j'ai fais : Nbre_Total_Boucl = 20
    au lieu de 'Nbre_Total_Boucl = Columns(3).Find("*", , , , , xlPrevious).Row -12

    et ca me fais erreur 13

    voir l'image Nom : code.PNG
Affichages : 159
Taille : 65,3 Ko

  9. #9
    Membre du Club

    Femme Profil pro
    étudiante
    Inscrit en
    Mars 2014
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : étudiante
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 123
    Points : 50
    Points
    50
    Billets dans le blog
    1
    Par défaut
    Bonjour tous le monde svp aidez moi pour resoudre se probléme

    ce que je veux faire c'est pouvoir tourner les boucles de mon code VBA quand la celulle B7 recoit la valeur de B1 . parceque maintenant mes boucle tourne lorsque la cellule T7 reçoit sa la valeur B1 .

    donc si vous pouvez m'aidez regardez svp le fichier excel et vous aller voir que les colonnes X ,I , R et la celulle B3 changent lorsque la valeur T7 reçoit sa la valeur B1. et moi je veux pas ca je veux que les colonne X ,I , R et la celulle B3 se remplissent lorsque B7 recoit la valeur de B1 .

    je suis désolé mais je suis obligé de vous mettre le fichier xlsm pour comprendre se que je veux faire j'ai vraiment besoin de votre aides les amis
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [Macro] Boucle non définie
    Par didinet dans le forum Macro
    Réponses: 3
    Dernier message: 12/09/2008, 09h44
  2. [XSLT] Répétion de boucles à un nombre défini
    Par Fatjo dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 20/11/2007, 12h06
  3. une boucle définie comme une methode
    Par scolopendra dans le forum Langage
    Réponses: 6
    Dernier message: 08/06/2007, 16h23
  4. [XSLT] Réutiliser une variable définie dans une boucle
    Par DelphLaga dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/10/2006, 16h49
  5. [Conception] Faire une somme de valeurs définies par une boucle
    Par fixbraun dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 25/09/2006, 23h46

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