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 :

Creer une boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 300
    Par défaut Creer une boucle
    Bonjour

    Voilà, les boucles et moi nous ne sommes pas copain....
    Je voudrais faire une boucle, de tel manière à répéter 9 fois une formule.

    Mais il faudrais que a chaque fois la valeur de ma TB Change TB1, TB2 etc....
    Et également le Code de recherche Code1, Code2 etc.....

    Voici mon problème du jour.

    Merci d'avance à vous.


    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
    Sub location()
    Dim TheDate As Long, Index As Variant, Temps As Variant
    
    Application.ScreenUpdating = False
    Worksheets("Articles").Activate
    
    DatCde = CDate(Command.Lab_DatCde)
    DatRet = CDate(Command.Lab_DateRetour)
    
    Code1 = "LCHAP000" 'Code AGLM
    Code2 = "LCHAP010"
    Code3 = "LCHAP300"
    Code4 = "LCHAP400"
    Code5 = "LCHAP500"
    Code6 = "LCHAP600"
    Code7 = "LCHAP330"
    Code8 = "LCHAP345"
    Code9 = "LCHAP360"
    
    'Ici il faudrait que Command_TB, prenne succéssivement TB1, TB2 etc...jusqu'à 9
    Cde = Command.TB 'Valeur de la TB3 de l'USF Command
    
    If Command.TB = "" Then
    Else
    Worksheets("Articles").Activate
     ' Ici que la valeur Code Cherche Code1, puis ensuite code 2 Etc.....
        With Sheets("Articles")
                'Chercher son nom dans la feuille Articles colonne B
                Set c = .Range("B2:B" & .Cells(.Rows.Count, 1).End(xlUp).Row).Find( _
                                What:=Code, _
                                After:=.Range("B2"), _
                                LookIn:=xlValues, _
                                LookAt:=xlWhole, _
                                SearchOrder:=xlByRows, _
                                SearchDirection:=xlNext, _
                                MatchCase:=False)
        Columns(2).Find(Code, , , , , Previous).Select
                c.Value = Code
           
          
            c(1, 12) = Cde3 'Nombre de Chapiteaux loué
            
            If c(1, 8).Value = "" Then
                c(1, 8) = Cde3 'Nbre ce Chapiteaux Cdé
                c(1, 7).FormulaR1C1 = "=IF(Articles!RC7="""","""",Articles!RC7-Articles!RC9)" 'DIspo = Stock Total - Qté Sortie
            Else
                c(1, 8) = c(1, 8) + Cde3 'Qté Sortie + Cde en cours
                c(1, 7).FormulaR1C1 = "=IF(Articles!RC7="""","""",Articles!RC7-Articles!RC9)" 'DIspo = Stock Total - Qté Sortie
            End If
          
            If DatCde = "" Then
                Else: c(1, 9) = CDate(DatCde) ' Affiche la Date de Sortie
            End If
            
           
            If DatRet = "" Then
                Else: c(1, 10) = CDate(DatRet) ' Affiche la date Retour
            End If
      
     c(1, 11).Select
     ActiveCell.FormulaR1C1 = "=IF(Articles!RC11="""","""",Articles!RC11-Articles!RC10)+1" ' Nbre de Jour de Loc = Date de Sortie - Date de Retour
      
      Temps = c(1, 11) 'Récupère la durée de Location
    
    End With
    
    '----------------------------------Recherche Date du début-------------------------------
    TheDate = CDate(c(1, 9))
    With Worksheets("Articles")
            Index = Application.Match(TheDate, .Range(.Cells(1, 1), .Cells(1, .Columns.Count)), 0) '
           
            If IsError(Index) Then
    
                MsgBox "Résultat négatif. Rien trouvé.", _
                       vbOKOnly + vbInformation, _
                       "Résultat"
            Else
               .Cells(1, Index).Select 'Sélectionne la date
            End If
           
    '---------------------------Sélectionne la cellule à l'intersection Ligne/Colonne----------
    
    Set Date_Loc = ActiveCell
    col = Date_Loc.Column
    
    Set Personnel = Range("B5:B1000").Find(Command.TB_Code) 'ici mettre le code en cours
    ligne = Personnel.Row
    Cells(ligne, col).Select
    
     
     For i = 1 To Temps
    ActiveCell = CDec(c(1, 7)) '= Valeur du Stock
    ActiveCell.Offset(0, 1).Select
    Next i
    If ActiveCell = "" Then
    ActiveCell = c(1, 7) + c(1, 12)
    Else: ActiveCell = ActiveCell + c(1, 12) ' Si la cellule est vide c'est le stock en cours + Retour
    End If
    End With
    Application.ScreenUpdating = True
    Worksheets("Planning").Activate
    End If
    End Sub

  2. #2
    Membre éclairé Avatar de verredewhisky
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Janvier 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Janvier 2013
    Messages : 63
    Par défaut
    Hello, faut utiliser des tableaux !

    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
     
    ...
    dim Code(1 to 9) as string
    ...
    Code(1) = "LCHAP000" 'Code AGLM
    Code(2) = "LCHAP010"
    Code(3) = "LCHAP300"
    Code(4) = "LCHAP400"
    Code(5) = "LCHAP500"
    Code(6) = "LCHAP600"
    Code(7) = "LCHAP330"
    Code(8) = "LCHAP345"
    Code(9) = "LCHAP360"
    ...
    for i = 1 to 9
    ...
    What:=Code(i), _
    ...
    next i
    ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 300
    Par défaut
    Merci pour ta réponse, j'ai essayé de faire pareil avec ma Command.tb (i), même en la déclarant cela ne fonctionne pas. cela bloque dès le début à la déclaration.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Command.TB(1 to 9) as String, cela bloque au niveau du point
     
    .......................
     
    'Ici il faudrait que Command_TB, prenne succéssivement TB1, TB2 etc...jusqu'à 9
    Cde = Command.TB(i)  'Valeur de la TB1 puis 2 puis 3 de l'USF Command
    Merci

Discussions similaires

  1. Creer une boucle en fonction du temps
    Par tdmort dans le forum Visual C++
    Réponses: 2
    Dernier message: 02/05/2012, 20h58
  2. Réponses: 1
    Dernier message: 27/07/2011, 21h30
  3. boite de dialogue et conditions, creer une boucle qui se génère tout le temps
    Par Misspatate dans le forum SAS AF et formulaires
    Réponses: 0
    Dernier message: 22/04/2009, 13h27
  4. [FLASH MX] Créer un objet dans une boucle
    Par alexfrere dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 30/04/2006, 01h35
  5. Creer une boucle dans une requête ???
    Par fdloisel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2004, 14h05

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