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 :

création d'une boucle pour une série


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 23
    Points : 15
    Points
    15
    Par défaut création d'une boucle pour une série
    Bonjour tout le monde,

    j'ai un tout petit problème de programmation. Je n'arrive pas à créer une boucle à partir de cette série:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .Range("AL2:AM2").DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK2"), Trend:=False
       .Range("AL3:AM3").DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK3"), Trend:=False
       .Range("AL4:AM4").DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK4"), Trend:=False
       .Range("AL5:AM5").DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK5"), Trend:=False
       .Range("AL6:AM6").DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK6"), Trend:=False
       .Range("AL7:AM7").DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK7"), Trend:=False
       .Range("AL8:AM8").DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK8"), Trend:=False
       .Range("AL9:AM9").DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK9"), Trend:=False
       .Range("AL10:AM10").DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK10"), Trend:=False
    Chaque ligne fonctionne, mais ayant plus de 200 lignes, j'aimerai une formule qui puisse me réaliser cette opération et non pas faire du ligne par ligne :S

    L'idéal serait une formule allant jusqu'a la dernière ligne de la colonne.

    Si quelqu'un peut m'aider dans cette tâche

    Merci d'avance !

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    n'ayant pas plus de precision sur ton besoins mais histoire de reduire le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i =2 to sheets("le nom de ton sheets").range(("AL"&rows.count).end (xlup).row
     
    .Range("AL"&i&":AM"&i).DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK" & i), Trend:=False
     next
    ca fait je meme travail en trouvant tout seul la derniere ligne si j'ai bien compris ta demande

    au plaisir

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup Patrick pour ta réponse,

    Oui effectivement, je n'ai pas cité mon besoin...

    La colonne "AL" comprend une date type "02-07-2012", la colonne "AM" est la colonne "réponse" qui fait apparaitre le résultat de l'opération des colonnes "AL" + "AK". La colonne "AK" comprend des nombres allant de 1 à 100 qui correspond à un nombre de jours à additionner à "AL".

    Seulement, je souhaite que les week ends soient sautés.

    Je te remercie pour ta proposition de code mais j'ai une erreur 1004 qui s'affiche à la deuxième ligne.

    Je complète l'extrait de code avec le tiens:

    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
    Private Sub CommandButton2_Click()
    Dim oldStatusBar As String
    Dim WshC As Worksheet, 
    Dim lastrow As Long
    Dim I As Integer
    lastrow = ActiveSheet.UsedRange.Rows.Count
     
    ' Cache des données lorsque Excel travaille
    With Application
        oldStatusBar = .DisplayStatusBar
        .DisplayStatusBar = True
        .StatusBar = "En Cours..." 'dans la barre d'etat
    '    .Calculation = xlManual
        .MaxChange = 0.001
        .ScreenUpdating = False
    End With
     
    Set WshC = Application.ThisWorkbook.Worksheets("corrélation des bases")
     
    With WshC
     For I = 2 To WshC.Range(("AL" & Rows.Count)).End(xlUp).Row
     
        .Range("AL" & I & ("AM" & I)).DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK" & I), Trend:=False
        Next
    End with
     
    With Application
        .ScreenUpdating = True
        .StatusBar = oldStatusBar
        .Calculation = xlAutomatic
        .MaxChange = 0.001
    End With
     
    'Fin de procédure et libération des variables
    Set WshC = Nothing
     
    End Sub
    Vois tu l'erreur ?

    Merci bien

  4. #4
    Membre confirmé Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 353
    Points : 633
    Points
    633
    Par défaut
    Bonjour,

    Je n'ai pas regardé en détail mais j'ai juste repéré une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With WshC
     For I = 2 To WshC.Range(("AL" & Rows.Count)).End(xlUp).Row
     
        .Range("AL" & I & ("AM" & I)).DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK" & I), Trend:=False
        Next
    End with
    Supprimes le WshC rouge car le With WshC doit suffire.

    Bertrand

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    J'ai supprimé le WshC comme tu me l'as dit Bear the french mais cela ne change rien. L'erreur de compilation 1004 se fait sur la ligne du dessous.

    Si je comprends bien le code de Patrick, I = 2 est déclaré et concatené uniquement pour la colonne "AL" non ? Ou cela fonctionne aussi pour les deux autres colonnes ?

    La déclaration de la variable en "integer" est elle juste ?

    Merci bien

    Bonne journée

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut RE
    Bonjour


    NON DE DIEUX DE FICHTRE DE DE PURéE DE ZUT

    essaie de recopier le code que l'on te donne correctement si possible

    je t'ai donner ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i =2 to sheets("le nom de ton sheets").range(("AL"&rows.count).end (xlup).row
     
    .Range("AL"&i&":AM"&i).DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK" & i), Trend:=False
     next
    mais le copier coller de ton ordi coupe un peu les caractères qui lui plaise pas

    donc toi tu met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For I = 2 To WshC.Range(("AL" & Rows.Count)).End(xlUp).Row
     
        .Range("AL" & I & ("AM" & I)).DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:=xlWeekday, Step:=.Range("AK" & I), Trend:=False
        Next
    regarde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("AL" & I & ("AM" & I)).
    et la différence avecle mien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("AL"& i &":AM"& i).
    tu la vois l'erreur la

    au plaisir

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Re bonjour

    Non Patrick ne me frappes pas :-p

    Arf effectivement j'aurais peut être dû expliquer ce problème avant...

    Non non, ce n'est pas que je coupe les caractères qui me plaisent pas. Si j'ai fait ca c'est parce que Excel ne m'accepte pas du tout la ligne...

    Tu as essayé le code ? Il fonctionne depuis chez toi ?

    Dommage que je ne puisse mettre des screenshots pour mieux expliquer...

    Dans la première ligne il me signale qu'il manque une parenthèse avant le ".end" bon, une fois rajoutée cette ligne ne pose plus problème.

    Par contre sur la deuxième ligne, dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("AL"& i &":AM"& i).
    Il me surligne ":AM" avec compil error: expected: list separator or )
    Donc il manque une parenthese du coup j'en place une devant mais il m'affiche toujours la même erreur un peu plus loin sur Rowcol. Du coup je rajoute encore une parenthèse pour fermer ce qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("AL" & I & ("AM" & I)).
    Et encore en plus, il m'accepte pas les ":" devant AM
    Crois moi que si ca avait fonctionné avec juste le copier coller je ne me serais pas amusé à le modifier

    Arf, je pense bien qu'il doit manquer une ptite bétise au code mais dans tous les cas ca fonctionne toujours pas grrrrrrrrrr

    a+
    merci

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re

    je viens de recopier la ligne de code dans un module et il n'y a pas d'erreur

    j'avoue que je ne comprend pas


    ah... j'oubliais ,il n'est pas necessaire d'ajouter des fin de parenthezes

    au plaisir

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Re

    bizarre bizarre cette histoire

    Pourquoi cela ne fonctionne t il pas chez moi ?

    Je laisse réelement les lignes telles que tu me les as misent, elles sont en rouge.

    impossible de compiler le programme.

    Tu es toi aussi en Excel 2007 ?

    De quelle manière faut il déclarer la variable i ?

    Y a t il un autre code similaire que je puisse essayer ?

    Merci pour le temps que tu passes a me lire

Discussions similaires

  1. Bonne maniére d'écrire une condition pour une boucle.
    Par erik2003 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/07/2014, 00h15
  2. [Toutes versions] faire référence à une celulle pour une boucle horizontal
    Par Philippe87420 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/04/2014, 14h08
  3. [Débutant] Boucle dans une boucle pour l'affichage de listes
    Par Alain31 dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 17/10/2013, 19h06
  4. Faire une boucle pour une concaténation
    Par vinou94400 dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/11/2010, 16h41
  5. [PHP 5.0] Manipulation XML une boucle dans une boucle
    Par lepotier dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2010, 12h15

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