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 :

Boucle For imbriquée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 50
    Par défaut Boucle For imbriquée
    Bonjours,

    J'ai une petite question élémentaire aujourd'hui, ayant du mal avec la programmation .

    J'ai un tableau tb contenant des dates (de 1 à 5 dates puisqu'il s'agit des jours durant lesquels se déroule une formation dans mon entreprise).

    Le code de création du tableau tb en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    y = 0
    For x = DTPicker1.Value To DTPicker2.Value
      If WorksheetFunction.Weekday(x, 2) <> 6 And WorksheetFunction.Weekday(x, 2) <> 7 Then
        y = y + 1
        ReDim Preserve tb(1 To y)
        tb(y) = x
      End If
    Next x

    dates que je souhaite insérer dans mon tableau excel en C5, E5, G5, I5, K5. Bien sur, par exemple si la formation ne dure par exemple que 2 jours, seul C5 et E5 seront remplis.

    Pour m'en sortir, j'ai voulu utiliser des boucles for imbriquées, mais cela ne fait pas ce que je veut.

    Le code en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim iColDeb As Integer, iColFin As Integer
    iColDeb = 3
    iColFin = 11
     
    For tableau = LBound(tb) To UBound(tb)
        For i = iColDeb To iColFin
        Worksheets(1).Cells(5, i) = tb(tableau)
        Next i
    Next tableau
    Bien évidement, de cette façon, il rentre dans toutes les cases la même date puisqu'il termine la boucle i avant d'incrémenter tableau. Seulement, je ne sais pas comment faire pour bien que tableau et i s'incrémentent tous les deux pour avoir dans la premiere case la premiere date, dans la seconde case, la 2nd date, etc...

    Petite chose en plus, je cherche comment insérer les dates à une cellule d'intervalle. Ce que je veut dire par la, c'est que comme expliqué au début, ma premiere date se trouve en C5, mais la 2nd se trouve en E5 et non en D5, pareil la suivante se trouve en G5.

    Merci d'avance!!

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim iColDeb As Integer, iColFin As Integer
    iColDeb = 3
    iColFin = 11
     
    i = iColDeb 
    For tableau = LBound(tb) To UBound(tb)
        Worksheets(1).Cells(5, i) = tb(tableau)
        i = i + 1
    Next tableau

  3. #3
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 50
    Par défaut
    Merci pour votre réponse, effectivement j'ai voulu chercher trop compliqué alors que comme cela ça marche .

    Par contre, je cherche encore comment aller sur mes cellules de 2 en 2.
    En fait, pour m'expliquer, mes cellules sont fusionnées par deux:
    C5 et D5 sont fusionnées
    E5 et F5 idem
    G5 et H5 idem
    I5 et J5 idem
    K5 et l5 idem

    Je cherche à avoir ma premiere date dans la cellule fusionnée C5-D5, la seconde en E5-F5, etc...D'ou ma recherche pour savoir comment aller de deux en deux.

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Bah i = i + 2 !!!

    Edit : Et pour info, si c'était dans la boucle For que tu voulais aller de 2 en 2, tu peux ajouter Step 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 11 Step 2
    ...
    Next i

  5. #5
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 50
    Par défaut
    Pff, je suis un vrai boulet ce matin . Merci, ça marche^^

  6. #6
    Membre averti
    Inscrit en
    Avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 50
    Par défaut
    Toujours avec mes dates, je viens de me rendre compte qu'une petite (mais importante) incohérence existe dans mes dates, la possibilité d'avoir un jour férie dans l'intervalle d'une formation!

    Par exemple, j'ai essayé de rentrer une formation entre le 27 avril et le 3 mai. Il exclu bien les week-end comme demandé, mais m'affiche le Mardi 1 mai...Au début, je pensais rajouter des conditions toutes simples excluant les différents jours feriés...Sauf que ma solution doit être faite pour durer, elle sera utilisée sur plusieurs années. Et certain jours fériés tels que paques ne tombent pas le même jour chaque année. Du coup, je ne peut faire une simple condition. Une solution serais dans mon formulaire de demander à l'utilisateur au lancement de la macro quel jour tombent les jours fériés cette année, mais ce serais super lourd pour lui...Existe-t-il un autre moyen de m'en sortir?

Discussions similaires

  1. Boucles for imbriquées
    Par The eye dans le forum ASP
    Réponses: 2
    Dernier message: 19/07/2007, 12h00
  2. Boucle for imbriqué
    Par boula dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/07/2007, 12h42
  3. 2 boucles for imbriquées
    Par karimphp dans le forum Langage
    Réponses: 8
    Dernier message: 02/12/2006, 14h46
  4. Batch - Deux boucle For imbriquées plus un FC
    Par Lorponos dans le forum Windows
    Réponses: 17
    Dernier message: 27/07/2006, 14h58
  5. [Syntaxe] Boucle For imbriquées en 1.5
    Par Piolet dans le forum Langage
    Réponses: 5
    Dernier message: 09/01/2005, 00h49

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