[Excel - VBA]

Bonjour,
J'ai un tout petit niveau en VBA donc je m'en remet a vous afin de réaliser ce que je souhaite
J'ai une petite liste déroulante (en B64) avec la liste des jours d'un moi précis
Donc du 1 au 30 ou 31 (la fin de la liste est représentée par "--"
Quand on clique sur un jour précis nous avons une plage de cellule qui s'affiche.
Ce que je veux c'est que cette plage soit copiée dans une nouvelle feuille
Je vous montre ma feuille excel pour imager mes propos ^^ :

http://images.imagup.com/03/1210667680_Sans%20titre.JPG

Donc j'ai pensé a la méthode :

-On se place dans la cellule B64(la ou 05/06/2008 est inscrit)
-On copie colle la plage de cellule dans la nouvelle feuille
-On se replace dans la cellule B64 a laquelle on ajoute 1 afin d'avoir le jour d'apres
-On re-copie/colle
Etc ...
Donc évidemment tout ca dans une boucle, on continue jusqu'a avoir "--" qui correspond a la fin du mois

Voici ma boucle qui premierement n'est pas automatisée (je dois appuyer sur le bouton a chaque fois pour ajouter 1)

Do

Range("B64") = Range("B64") + 1

Loop While Range("B64") = "--"

Avec un Loop Until j'ai une boucle infinie car il ne trouve pas mes "--"

N'hésitez pas a demander si je peux vous éclairer car je pense pas que ca soit super clair
Configuration: Windows XP
Firefox 2.0.0.14

10 réponses

  1. Je ne sais pas, je vais essayer de voir ce week comment faire et je te tiens au courant si j'ai une solution

    ;o)
    1. L'autre solution vu que la liste déroulante serait de sarrété quand B64 <> ##/06/####
      Je sais pas si c'est possible
      1. Elle se trouve bien dans la liste déroulante mais meme si je met la derniere valeur de la liste en condition d'arret("30/06/2008") il ne s'arrete pas
        1. Range("B64") = Range("B64") + 1 '<== je ne vois pas pourquoi ?

          C'est ce qui me permet de changer de jour dans la case B64

          de passer de 01/05/2008 a 02/05/2008 par exemple !

          Mais sinon le code que tu mas passé la tourne indéfiniment, Excel plante :s
          1. Tu ne change pas de numéro de ligne automatiquement.
            J'ai pas testé mais test ça :

            Sub Bouton66_QuandClic()
            Dim i As Long
            i = 64
            Sheets.Add(after:=Sheets(Sheets.Count)).Name = "Nouvelle"
            While Range("B" & i).Value <> "--"
            Range("B64") = Range("B64") + 1 '<== je ne vois pas pourquoi ?

            Worksheets("Projection").Select
            Worksheets("Projection").Range("A" & i + 1 & ":E" & Cells(Rows.Count, "A").End(xlUp).Row).Copy
            Sheets("Nouvelle").Select
            Range("A1").Select
            Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False

            i = i + 1
            wend

            End Sub
            1. Voila ce que j'ai fait mais ma structure doit etre des plus mauvaises :s

              Sub Bouton66_QuandClic()
              Sheets.Add(after:=Sheets(Sheets.Count)).Name = "Nouvelle"
              Do
              Range("B64") = Range("B64") + 1

              Worksheets("Projection").Select
              Worksheets("Projection").Range("A65:E" & Cells(Rows.Count, "A").End(xlUp).Row).Copy
              Sheets("Nouvelle").Select
              Range("A1").Select
              Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
              xlNone, SkipBlanks:=False, Transpose:=False

              Loop Until Range("B64") = "--"

              End Sub
              1. Bonjour,

                il faut incrémenté le numéro de ligne à chaque fin de boucle :

                Dim i As Long
                
                i = 64
                
                While Range("B" & i).value <> "--"
                  'code à exécuter
                   i = i + 1
                Wend


                ;o)

                polux