[Excel - VBA]

Fermé
Alex - 23 mai 2008 à 14:06
 Alex - 23 mai 2008 à 16:49
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

OOOPPSSS Désolé pour le titre :s j'ai pas complété
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 mai 2008 à 14:13
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
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 mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 mai 2008 à 14:58
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
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 mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 mai 2008 à 15:07
es-tu sur d'avoir une cellule qui contient "--" ???
0
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
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 mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 mai 2008 à 16:41
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
Merci beaucoup !!
0