OVH Cloud OVH Cloud

recherche d'une date

5 réponses
Avatar
Daniel Crochart
Bonjour , sur une feuille de cacul excel j'ai un tableau avec
horizontalement différents noms et verticalement des dates, j'aimerais grâce
à une boite de dialogue ou je définit un nom, une date de debut et une date
de fin, j'ai affecte une macro à un bouton pour qu'il cherche la valeur
associe au nom a la date de debut et qu'il en retranche la valeur de ce meme
nom a la date de fin. Ce qui en soit ne paraissait pas insurmontable, mais
voilà j'ai un probleme, j'avais utilise la fonction recherche afin de
trouver la date mais lorsque je lance la macro il s'arrete en me mettant un
message

La macro s'arrete a la ligne

Cells.Find(What:=datedeb, After:=ActiveCell, LookIn:=xlFormulas,
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False).Activate

Le message dit

ERREUR D'EXECUTION 91 :

Variable objet ou variable de bloc With non définie

Là je nage et je demande l'aide, merci d'avance

Voici ci-dessous un extrait du module

Private Sub CommandButton1_Click()

Dim valeurs, colonnevaleurs, val1, val2, a, b As Variant

Dim datdeb, datefin As Date



valeurs = ComboBox1

datedeb = TextBox5

datefin = TextBox6

If datedeb > datefin Then

msg = MsgBox("Attention la date de début est supérieur à la date de fin;
Veuillez la modifier !!!", vbOKOnly, "ERREUR DE DATE")



End If

If valeurs = "APRR" Then

colonnevaleurs = "2"

ElseIf valeurs = "AXA" Then

colonnevaleurs = "3"

ElseIf valeurs = "SAGEM" Then

colonnevaleurs = "4"

ElseIf valeurs = "SANEF" Then

colonnevaleurs = "5"

ElseIf valeurs = "SNECMA" Then

colonnevaleurs = "6"

Else

colonnevaleurs = "7"

End If

a = TextBox5

UserForm3.Hide

b = 16 / 4 / 2005

Sheets("valeurs").Activate

Range("a4").Activate

Cells.Find(What:=datedeb, After:=ActiveCell, LookIn:=xlFormulas,
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False).Activate

Do

If ActiveCell = b Then

ActiveCell.Offset(-1, 0).Range("A1").Select

Exit Do

Else

ActiveCell.Offset(1, 0).Range("A1").Select

End If

Loop



val1 = Cells(datedeb, colonnevaleurs).Value

val2 = Cells(datefin, colonnevaleurs).Value

End Sub

5 réponses

Avatar
Kamel
"Daniel Crochart" a écrit dans le message de
news: %
Bonjour , sur une feuille de cacul excel j'ai un tableau avec
horizontalement différents noms et verticalement des dates, j'aimerais
grâce
à une boite de dialogue ou je définit un nom, une date de debut et une
date
de fin, j'ai affecte une macro à un bouton pour qu'il cherche la valeur
associe au nom a la date de debut et qu'il en retranche la valeur de ce
meme
nom a la date de fin. Ce qui en soit ne paraissait pas insurmontable, mais
voilà j'ai un probleme, j'avais utilise la fonction recherche afin de
trouver la date mais lorsque je lance la macro il s'arrete en me mettant
un
message

La macro s'arrete a la ligne

Cells.Find(What:Útedeb, After:¬tiveCell, LookIn:=xlFormulas,
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse).Activate

Le message dit

ERREUR D'EXECUTION 91 :

Variable objet ou variable de bloc With non définie

Là je nage et je demande l'aide, merci d'avance

Voici ci-dessous un extrait du module

Private Sub CommandButton1_Click()

Dim valeurs, colonnevaleurs, val1, val2, a, b As Variant

Dim datdeb, datefin As Date


---> Contrairement à d'autres langages, il faut définir à coté de chaque
variable son type: Dim datdeb As Date, datefin As Date ...




valeurs = ComboBox1

datedeb = TextBox5

datefin = TextBox6

If datedeb > datefin Then

msg = MsgBox("Attention la date de début est supérieur à la date de fin;
Veuillez la modifier !!!", vbOKOnly, "ERREUR DE DATE")



End If

If valeurs = "APRR" Then

colonnevaleurs = "2"

ElseIf valeurs = "AXA" Then

colonnevaleurs = "3"

ElseIf valeurs = "SAGEM" Then

colonnevaleurs = "4"

ElseIf valeurs = "SANEF" Then

colonnevaleurs = "5"

ElseIf valeurs = "SNECMA" Then

colonnevaleurs = "6"

Else

colonnevaleurs = "7"

End If


----> Un 'Select Case ... End Select' est plus lisible



a = TextBox5

UserForm3.Hide


---> Après avoir caché le dialogue il est toujours en mémoire, pour vider la
mémoire utiliser après
Unload Userform3


b = 16 / 4 / 2005

Sheets("valeurs").Activate

Range("a4").Activate


----> Il vaut mieux utiliser la méthode Select de ces 2 objets. 'Activate'
est utilisée généralement quand on selectionne plusieurs cellule et que l'on
veut définir la cellule active.


Cells.Find(What:Útedeb, After:¬tiveCell, LookIn:=xlFormulas,
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse).Activate


---> Ton problème vient
- soit du fait que le programme ne sait pas dans quelles cellules chercher:
il faut donc ecrire Sheets("valeurs").Cells.Find( ....)
- soit de la définition de la cellule a partir de laquelle il commence la
recherche : il faut ecrire ... ,After:=Sheets("valeurs").Range("a4"), ....


Do

If ActiveCell = b Then

ActiveCell.Offset(-1, 0).Range("A1").Select


---> Aussi que veux tu faire par cette ligne ???



Exit Do

Else

ActiveCell.Offset(1, 0).Range("A1").Select

End If

Loop



val1 = Cells(datedeb, colonnevaleurs).Value

val2 = Cells(datefin, colonnevaleurs).Value

End Sub



Kamel

Avatar
Kamel
En regardant d'un peu plus près je me rends comptes de l'erreur ....

Tu declares
Dim datdeb, datefin As Date --> datdeb sans le 'e'

Et tu recherches 'datedeb' avec un 'e' ....

Bon courage !
Kamel
"Daniel Crochart" a écrit dans le message de
news: %
Bonjour , sur une feuille de cacul excel j'ai un tableau avec
horizontalement différents noms et verticalement des dates, j'aimerais
grâce
à une boite de dialogue ou je définit un nom, une date de debut et une
date
de fin, j'ai affecte une macro à un bouton pour qu'il cherche la valeur
associe au nom a la date de debut et qu'il en retranche la valeur de ce
meme
nom a la date de fin. Ce qui en soit ne paraissait pas insurmontable, mais
voilà j'ai un probleme, j'avais utilise la fonction recherche afin de
trouver la date mais lorsque je lance la macro il s'arrete en me mettant
un
message

La macro s'arrete a la ligne

Cells.Find(What:Útedeb, After:¬tiveCell, LookIn:=xlFormulas,
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse).Activate

Le message dit

ERREUR D'EXECUTION 91 :

Variable objet ou variable de bloc With non définie

Là je nage et je demande l'aide, merci d'avance

Voici ci-dessous un extrait du module

Private Sub CommandButton1_Click()

Dim valeurs, colonnevaleurs, val1, val2, a, b As Variant

Dim datdeb, datefin As Date



valeurs = ComboBox1

datedeb = TextBox5

datefin = TextBox6

If datedeb > datefin Then

msg = MsgBox("Attention la date de début est supérieur à la date de fin;
Veuillez la modifier !!!", vbOKOnly, "ERREUR DE DATE")



End If

If valeurs = "APRR" Then

colonnevaleurs = "2"

ElseIf valeurs = "AXA" Then

colonnevaleurs = "3"

ElseIf valeurs = "SAGEM" Then

colonnevaleurs = "4"

ElseIf valeurs = "SANEF" Then

colonnevaleurs = "5"

ElseIf valeurs = "SNECMA" Then

colonnevaleurs = "6"

Else

colonnevaleurs = "7"

End If

a = TextBox5

UserForm3.Hide

b = 16 / 4 / 2005

Sheets("valeurs").Activate

Range("a4").Activate

Cells.Find(What:Útedeb, After:¬tiveCell, LookIn:=xlFormulas,
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse).Activate

Do

If ActiveCell = b Then

ActiveCell.Offset(-1, 0).Range("A1").Select

Exit Do

Else

ActiveCell.Offset(1, 0).Range("A1").Select

End If

Loop



val1 = Cells(datedeb, colonnevaleurs).Value

val2 = Cells(datefin, colonnevaleurs).Value

End Sub




Avatar
AV
datedeb = cdate(TextBox5)
datefin = cdate(TextBox6)

AV
Avatar
Daniel Crochart
"AV" a écrit dans le message de
news:e9%
datedeb = cdate(TextBox5)
datefin = cdate(TextBox6)

AV

merci ça marche>


Avatar
Daniel Crochart
tu as raison, pour l'erreur,mais même ceci corriger et ton astuce prédédente
ne resolve pas mon problème, par contre AV à trouver l'astuce.
merci tout de même et bon lundi
"Kamel" a écrit dans le message de
news:

En regardant d'un peu plus près je me rends comptes de l'erreur ....

Tu declares
Dim datdeb, datefin As Date --> datdeb sans le 'e'

Et tu recherches 'datedeb' avec un 'e' ....

Bon courage !
Kamel
"Daniel Crochart" a écrit dans le message de
news: %
Bonjour , sur une feuille de cacul excel j'ai un tableau avec
horizontalement différents noms et verticalement des dates, j'aimerais
grâce
à une boite de dialogue ou je définit un nom, une date de debut et une
date
de fin, j'ai affecte une macro à un bouton pour qu'il cherche la valeur
associe au nom a la date de debut et qu'il en retranche la valeur de ce
meme
nom a la date de fin. Ce qui en soit ne paraissait pas insurmontable,
mais


voilà j'ai un probleme, j'avais utilise la fonction recherche afin de
trouver la date mais lorsque je lance la macro il s'arrete en me mettant
un
message

La macro s'arrete a la ligne

Cells.Find(What:Útedeb, After:¬tiveCell, LookIn:=xlFormulas,
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse).Activate

Le message dit

ERREUR D'EXECUTION 91 :

Variable objet ou variable de bloc With non définie

Là je nage et je demande l'aide, merci d'avance

Voici ci-dessous un extrait du module

Private Sub CommandButton1_Click()

Dim valeurs, colonnevaleurs, val1, val2, a, b As Variant

Dim datdeb, datefin As Date



valeurs = ComboBox1

datedeb = TextBox5

datefin = TextBox6

If datedeb > datefin Then

msg = MsgBox("Attention la date de début est supérieur à la date de fin;
Veuillez la modifier !!!", vbOKOnly, "ERREUR DE DATE")



End If

If valeurs = "APRR" Then

colonnevaleurs = "2"

ElseIf valeurs = "AXA" Then

colonnevaleurs = "3"

ElseIf valeurs = "SAGEM" Then

colonnevaleurs = "4"

ElseIf valeurs = "SANEF" Then

colonnevaleurs = "5"

ElseIf valeurs = "SNECMA" Then

colonnevaleurs = "6"

Else

colonnevaleurs = "7"

End If

a = TextBox5

UserForm3.Hide

b = 16 / 4 / 2005

Sheets("valeurs").Activate

Range("a4").Activate

Cells.Find(What:Útedeb, After:¬tiveCell, LookIn:=xlFormulas,
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse).Activate

Do

If ActiveCell = b Then

ActiveCell.Offset(-1, 0).Range("A1").Select

Exit Do

Else

ActiveCell.Offset(1, 0).Range("A1").Select

End If

Loop



val1 = Cells(datedeb, colonnevaleurs).Value

val2 = Cells(datefin, colonnevaleurs).Value

End Sub