[Excel - VBA]

Alex -  
 Alex -
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
A voir également:

10 réponses

Alex
 
OOOPPSSS Désolé pour le titre :s j'ai pas complété
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
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
0
Alex
 
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
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alex
 
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
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
es-tu sur d'avoir une cellule qui contient "--" ???
0
Alex
 
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
0
Alex
 
L'autre solution vu que la liste déroulante serait de sarrété quand B64 <> ##/06/####
Je sais pas si c'est possible
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
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)
0
Alex
 
Merci beaucoup !!
0