[vba]action après selection danss liste déroulante

Yannanou

XLDnaute Nouveau
Bonjour,

Je fait créé une fenetre avec liste déroulante, mais après avoir fait le choix dans cette liste (deux dates) j'aimerai copier toutes les lignes qui sont comprises entre ces deux dates.
Je pense que ma définition de variable est mauvaise.

J'ai mis un petit mot à coté de l'endroit ou il affiche l'erreur.
Merci de votre interet.
Bonne soirée.

Yann



Une partie de la macro :

'*******************************************************************************************/
' /
'Nom: ListeDeroulanteModifiable /
'Auteur: Yann /
'Date: 13/7/2007 /
' /
'Déscription: Pour afficher la fenetre "choix date" et lancer la macro qui lui /
' incombe. Celle-ci conciste à récuperer les information des incidents /
' entre deux dates, de les copiers dans la feulle "tri daté", et de les /
' mettre en forme. /
' /
'*******************************************************************************************/

Private Sub UserForm_Activate()

'********************************************************************************************/
' Renvoit à la mise en forme de la fenetre "ListeDeroulanteModifiable"***********************/
'********************************************************************************************/

Sheets("Données").Select
Dim I As Integer
Dim nbligne As Long
nbligne = Application.WorksheetFunction.CountA(Range("B:B"))
ListeDeroulanteModifiable.Listedate.Clear
For I = 1 To nbligne
ListeDeroulanteModifiable.Listedate.AddItem Cells(I, 2).Value
ListeDeroulanteModifiable.Listedate2.AddItem Cells(I, 2).Value
Next
Listedate.ListIndex = 0

End Sub

Private Sub Valider_Click()

'********************************************************************************************/
' Définition des variables*******************************************************************/
'********************************************************************************************/

ListeDeroulanteModifiable.Hide
Application.ScreenUpdating = False
Marque = Listedate.Value
Marque2 = Listedate2.Value

'********************************************************************************************/
' Renvoit à la gestion d'erreur en bas de page***********************************************/
'********************************************************************************************/

On Error GoTo GestionErreur

'********************************************************************************************/
' Remise à zero de la feuille "compte rendu daté"********************************************/
'********************************************************************************************/

Sheets("Compte rendu daté").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("Données").Select
ActiveSheet.ShowAllData
Application.Dialogs(xlDialogFilter).Show 2

'********************************************************************************************/
' Selection et activation de l'affichage total de la feuille "Données"***********************/
'********************************************************************************************/

rangecopy = Marque: Marque 2 ==========> c'est ici qu'il m'affiche une erreur de compilation
Rows(rangecopy).Select
Range(Marque, Marque2).Copy

Selection.Copy
Sheets("Compte rendu daté").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True

'*********************************************************************************************/
' Mise en forme de la feuille "Compte rendu daté"*********************************************/
'*********************************************************************************************/

Selection.Interior.ColorIndex = xlNone
Columns("A:A").EntireColumn.AutoFit
Columns("B:B").EntireColumn.AutoFit
Columns("C:C").EntireColumn.AutoFit
Range("1:1,9:9,15:15,16:16,18:18").Select
Range("A18").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveCell.FormulaR1C1 = "D.Début"
With ActiveCell.Characters(Start:=1, Length:=17).Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 10
.Strikethrough = False...........
 

porcinet82

XLDnaute Barbatruc
Re : [vba]action après selection danss liste déroulante

Salut,

En faite ta définition de variable n'est pas bonne, tu ne peux pas la définir de cette manière. Pour moi (il y a peut etre plus simple), il faut que tu fasses une recherches de la cellule ou se trouve Marque, puis Marque2 et garder (dans des variables) les adresses de ces cellules afin de pouvoir copier la plage de cellule en question.
Si tu as des soucis des difficultés a le faire, mets nous un exemple de ton fichier pour qu'on te file un peu d'aide.

Quelques petites remarques supplémentaires, ton code peut etre un peut alléger, notamment en supprimant les Select et il y a quelques morceaux de code qui n'ont pas l'air de passer non plus...

@+
 
Dernière édition:

Yannanou

XLDnaute Nouveau
Re : [vba]action après selection danss liste déroulante

D'accord je veux bien un peut d'aide pour la recherche de cellule.

En fait j'aimerai pouvoir récuperer des données d'une feuille nommée "Données" dans une feuille "Trie daté", les données qui serai copiée sont les données comprises entre les deux dates choisies dans la feuilles "Données" collone B.

Merci de votre interet.

PS:Je vous ai mi le fichier en piéce jointe.

Yann
 

porcinet82

XLDnaute Barbatruc
Re : [vba]action après selection danss liste déroulante

re,

Pas evident sans le fichier, mais je dirai quelque chose dans ce genre :
Code:
Private Sub Valider_Click()
Dim adress_marque As String, adress_marque2 As String
ListeDeroulanteModifiable.Hide
Application.ScreenUpdating = False
On Error GoTo GestionErreur
Sheets("Compte rendu daté").Cells.Delete Shift:=xlUp
Sheets("Données").ShowAllData
Application.Dialogs(xlDialogFilter).Show 2
adress_marque = Cells.Find(What:=Listedate.Value, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
    xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
    True, SearchFormat:=False).Address(0, 0)
adress_marque2 = Cells.Find(What:=Listedate2.Value, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
    xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
    True, SearchFormat:=False).Address(0, 0)
Range(adress_marque, adress_marque2).Copy
With Sheets("Compte rendu daté").Range("A1")
    .PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End With
'le selection est sur quelles cellules ???? Remplacer par le Selection par les cellules concernées
Selection.Interior.ColorIndex = xlNone
Columns("A:C").EntireColumn.AutoFit
'Range("1:1,9:9,15:15,16:16,18:18").Select => Ne fonctionne pas, je ne sais pas ce que tu as voulu faire
Range("A18").Delete Shift:=xlUp
Selection.Delete Shift:=xlUp
Range("A1").FormulaR1C1 = "D.Début"
With ActiveCell.Characters(Start:=1, Length:=17).Font
    .Name = "Arial"
    .FontStyle = "Gras"
    .Size = 10
    .Strikethrough = False
End With
End Sub

@+
 

Yannanou

XLDnaute Nouveau
Re : [vba]action après selection danss liste déroulante

Si vous le désirer je vous l'envoie par mail le fichier car mal heuruesement il fait 300ko.

Voila merci encors

J'ai essayé ma ça ne marche pas avec le sript présent si dessus je suis dsl
 
Dernière édition:

porcinet82

XLDnaute Barbatruc
Re : [vba]action après selection danss liste déroulante

re,

Tu as testé mon code ou pas ? Si il y a un soucis, envoie moi ton fichier sur mon mail (meme adresse qu'msn) et j'essais d'y jeter un oeil aujourd'hui.

@+

PS : Tu peux tutoyer les forumeurs ;)
 

porcinet82

XLDnaute Barbatruc
Re : [vba]action après selection danss liste déroulante

re,

Bon j'ai modifié la structure du code puisque comme il peut y avoir plusieurs fois la meme date, le Find n'etait pas adéquate, je suis donc passé par des boucles. J'ai également viré la boite de dialogue de filtre qui ne fonctionnait pas, par contre je n'arrive pas a gerer le filtrage dans la macro. Pour le reste, ca tourne. Je n'ai pas regardé le code de la mise en page, mais tu peux aisément le réduite en supprimant tous les Select comme je te l'ai dit ce matin.

Code:
Private Sub Valider_Click()
Dim adress_marque&, adress_marque2&, i&
ListeDeroulanteModifiable.Hide
Application.ScreenUpdating = False
Sheets("Compte rendu daté").Cells.Delete Shift:=xlUp
On Error Resume Next
Sheets("Données").ShowAllData
For i = 2 To Range("A65536").End(xlUp).Row
    If Cells(i, 2).Value = CDate(Listedate.Value) Then adress_marque = i: Exit For
Next i
For i = Range("A65536").End(xlUp).Row To 1 Step -1
    If Cells(i, 2).Value = CDate(Listedate2.Value) Then adress_marque2 = i: Exit For
Next i
Rows(adress_marque & ":" & adress_marque2).Copy
With Sheets("Compte rendu daté").Range("A1")
    .PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End With
Application.CutCopyMode = False

'*********************************************************************************************/
' Mise en forme de la feuille "Compte rendu daté" ********************************************/
'*********************************************************************************************/
'********************************************************************************************/
' Remise en forme de la feuille "Données" et retour au "Tri_quotidien"***********************/
'********************************************************************************************/
'Sheets("Données").ShowAllData
'Sheets("Tri_date").Select

Application.ScreenUpdating = True 'pour remettre l'affichage à jour si vous l'avez désactivé
Application.Cursor = xlDefault 'pour remettre le curseur par défaut si vous l'avez modifié
End Sub

@+
 

Yannanou

XLDnaute Nouveau
Re : [vba]action après selection danss liste déroulante

Merci beaucoup le noyaux dur du probleme est résolut, ça marche.

Je regarderai demain matin pour le détail et ajouterai un message dans notre discussion car il y a des chances que je sois encors coincé.

Merci beaucoup a toi cela m'enlève une enorme épine du pied.
 

porcinet82

XLDnaute Barbatruc
Re : [vba]action après selection danss liste déroulante

Salut,

Modifie le code de la manière suivante :
Code:
[B][COLOR=blue]Rows(1).Copy Destination:=Sheets("Compte rendu daté").Range("A1")
[/COLOR][/B]Rows(adress_marque & ":" & adress_marque2).Copy
With Sheets("Compte rendu daté").Range("[COLOR=blue][B]A2[/B][/COLOR]")
    .PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End With

@+
 

Yannanou

XLDnaute Nouveau
Re : [vba]action après selection danss liste déroulante

C'est encor moi,
Je suis dsl, je me suis mal exprimé. je voullais transposer la ligne 1 de la feuille "données" à la colonne A de la feuille "tri...."

Je suis dsl
Merci d'avance

Yann
 

porcinet82

XLDnaute Barbatruc
Re : [vba]action après selection danss liste déroulante

re,

Arfff, pas de mal. J'ai pas testé mais je dirai :

Code:
With Sheets("Compte rendu daté").Range("A1")
    Rows(1).Copy 
    .PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    Rows(adress_marque & ":" & adress_marque2).Copy
   .PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End With

@+
 

Discussions similaires

Réponses
3
Affichages
564

Statistiques des forums

Discussions
312 025
Messages
2 084 735
Membres
102 648
dernier inscrit
radhwane taibi