Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Excel_vba_selection tableau en fonction de 2 valeurs saisie par l'utilisateur.

3 réponses
Avatar
corinneverhulst
Bonjour,
Voici ma Question : comment programmer en VBA une selection en
focntion de 2 valeurs choisie par l'utilisateur ? ( ici 2 dates )

DATE VARIABLE A VARIABLE B VARIABLE C
01/05/07 1 111 12
02/05/07 3 221 52
10/05/07 2 212 42
12/05/07 6 152 32
14/05/07 5 134 21

EXEMPLE :
date debut = 05/05/2007
date fin = 15/05/2007

Resultat de la selection : DATE VARIABLE A VARIABLE B VARIABLE C
10/05/07 2 212 42
12/05/07 6 152 32
14/05/07 5 134 21
Merci d'avance pour vos conseils,
Bien cordialement,
Corinne

3 réponses

Avatar
JB
Bonjour,

ligne = 1
For Each c In Range("A1", [A65000].End(xlUp))
If c >= [G1] And c <= [G2] Then
Cells(ligne, 13).Resize(, 3).Value = c.Resize(, 3).Value
ligne = ligne + 1
End If
Next c

http://cjoint.com/?fnszlBpmc2

JB


On 13 mai, 17:42, wrote:
Bonjour,
Voici ma Question : comment programmer en VBA une selection en
focntion de 2 valeurs choisie par l'utilisateur ? ( ici 2 dates )

DATE VARIABLE A VARIABLE B VARIABLE C
01/05/07 1 111 12
02/05/07 3 221 52
10/05/07 2 212 42
12/05/07 6 152 32
14/05/07 5 134 21

EXEMPLE :
date debut = 05/05/2007
date fin = 15/05/2007

Resultat de la selection : DATE VARIABLE A VARIABLE B VARIABLE C
10/05/07 2 212 42
12/05/07 6 152 32
14/05/07 5 134 21
Merci d'avance pour vos conseils,
Bien cordialement,
Corinne


Avatar
hasco
Bonjour,

Si c'est une sélection qui est recherchée et en supposant que les date sont
en colonne 1 :

Sub SelPlageDates(DateDebut As Date, DateFin As Date)
Dim c As Range, c1 As Range, c2 As Range, plage As Range
Dim DerLigne As Long

' Permuter les dates si la date de débute est supérieure à la date de fin
If DateDebut > DateFin Then
Dim dateTemp As Date
dateTemp = DateFin
DateFin = DateDebut
DateDebut = DateFin
End If

' Trouver la dernière ligne de la plage de valeurs
DerLigne = Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row

' Sortir s'il n'existe qu'une ligne de valeur
If DerLigne < 2 Then Exit Sub

' Determine la plage de recherche de dates
Set plage = Range("A1:A" & DerLigne)

' Trouve la première date = ou > à DateDebut
For Each c In plage
If c.Value >= DateDebut Then
Set c1 = c
Exit For ' sortie de la boucle
End If
Next c

' Si on est pas à la fin de la plage on cherche une date <= à la date de fin

If c.Row < DerLigne Then
Set plage = Range("A" & c.Row & ":A" & DerLigne)
Do While c.Row <= DerLigne
Set c = c.Offset(1)
If c.Value = DateFin Then Set c2 = c
Loop
End If

' Si on a obtenu deux date on créer la selection
If Not c1 Is Nothing And Not c2 Is Nothing Then
Range(c1.Address & ":" & c2.Address).Resize(, 4).Select
End If

End Sub

Sub test()
SelPlageDates DateValue("03/02/07"), DateValue("05/05/07")

End Sub





Bonjour,
Voici ma Question : comment programmer en VBA une selection en
focntion de 2 valeurs choisie par l'utilisateur ? ( ici 2 dates )

DATE VARIABLE A VARIABLE B VARIABLE C
01/05/07 1 111 12
02/05/07 3 221 52
10/05/07 2 212 42
12/05/07 6 152 32
14/05/07 5 134 21

EXEMPLE :
date debut = 05/05/2007
date fin = 15/05/2007

Resultat de la selection : DATE VARIABLE A VARIABLE B VARIABLE C
10/05/07 2 212 42
12/05/07 6 152 32
14/05/07 5 134 21
Merci d'avance pour vos conseils,
Bien cordialement,
Corinne




Avatar
hasco
Oups!!!!!!!!!
corriger la ligne :
If c.Value >= DateDebut then
par
If isDate(c) and c.Value>ÚteDebut then

Et la ligne
If c.Value = DateFin Then Set c2 = c
par
If isDate(c) and c.Value<ÚteFin then Set c2=c

bon courage



Bonjour,

Si c'est une sélection qui est recherchée et en supposant que les date sont
en colonne 1 :

Sub SelPlageDates(DateDebut As Date, DateFin As Date)
Dim c As Range, c1 As Range, c2 As Range, plage As Range
Dim DerLigne As Long

' Permuter les dates si la date de débute est supérieure à la date de fin
If DateDebut > DateFin Then
Dim dateTemp As Date
dateTemp = DateFin
DateFin = DateDebut
DateDebut = DateFin
End If

' Trouver la dernière ligne de la plage de valeurs
DerLigne = Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row

' Sortir s'il n'existe qu'une ligne de valeur
If DerLigne < 2 Then Exit Sub

' Determine la plage de recherche de dates
Set plage = Range("A1:A" & DerLigne)

' Trouve la première date = ou > à DateDebut
For Each c In plage
If c.Value >= DateDebut Then
Set c1 = c
Exit For ' sortie de la boucle
End If
Next c

' Si on est pas à la fin de la plage on cherche une date <= à la date de fin

If c.Row < DerLigne Then
Set plage = Range("A" & c.Row & ":A" & DerLigne)
Do While c.Row <= DerLigne
Set c = c.Offset(1)
If c.Value = DateFin Then Set c2 = c
Loop
End If

' Si on a obtenu deux date on créer la selection
If Not c1 Is Nothing And Not c2 Is Nothing Then
Range(c1.Address & ":" & c2.Address).Resize(, 4).Select
End If

End Sub

Sub test()
SelPlageDates DateValue("03/02/07"), DateValue("05/05/07")

End Sub





Bonjour,
Voici ma Question : comment programmer en VBA une selection en
focntion de 2 valeurs choisie par l'utilisateur ? ( ici 2 dates )

DATE VARIABLE A VARIABLE B VARIABLE C
01/05/07 1 111 12
02/05/07 3 221 52
10/05/07 2 212 42
12/05/07 6 152 32
14/05/07 5 134 21

EXEMPLE :
date debut = 05/05/2007
date fin = 15/05/2007

Resultat de la selection : DATE VARIABLE A VARIABLE B VARIABLE C
10/05/07 2 212 42
12/05/07 6 152 32
14/05/07 5 134 21
Merci d'avance pour vos conseils,
Bien cordialement,
Corinne