[Excel - VBA]
Alex
-
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
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:
- [Excel - VBA]
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
10 réponses
Bonjour,
il faut incrémenté le numéro de ligne à chaque fin de boucle :
;o)
polux
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
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
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
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
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
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
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
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
L'autre solution vu que la liste déroulante serait de sarrété quand B64 <> ##/06/####
Je sais pas si c'est possible
Je sais pas si c'est possible