Comment chercher la date du jour dans une colonne de dates et
r=E9cup=E9rer tout les donn=E9es de cette ligne au cas ou elle y, sinon on
insere la date du jour =E0 son emplacement convenable.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel
Bonjour. Ceci (je n'ai pas compris où insérer la date) :
Sub test() Dim ctr ctr = Application.Match(Date * 1, Range("A:A"), 0) If IsNumeric(ctr) Then Range("A1")(ctr, 1).EntireRow.Copy 'coller où tu veux Else 'insérer à un emplacement convenable End If End Sub
Cordialement. Daniel "apt" a écrit dans le message de news:
Bonjour,
Comment chercher la date du jour dans une colonne de dates et récupérer tout les données de cette ligne au cas ou elle y, sinon on insere la date du jour à son emplacement convenable.
Merci.
Bonjour.
Ceci (je n'ai pas compris où insérer la date) :
Sub test()
Dim ctr
ctr = Application.Match(Date * 1, Range("A:A"), 0)
If IsNumeric(ctr) Then
Range("A1")(ctr, 1).EntireRow.Copy
'coller où tu veux
Else
'insérer à un emplacement convenable
End If
End Sub
Cordialement.
Daniel
"apt" <apitops@gmail.com> a écrit dans le message de news:
1144070596.259411.183300@e56g2000cwe.googlegroups.com...
Bonjour,
Comment chercher la date du jour dans une colonne de dates et
récupérer tout les données de cette ligne au cas ou elle y, sinon on
insere la date du jour à son emplacement convenable.
Bonjour. Ceci (je n'ai pas compris où insérer la date) :
Sub test() Dim ctr ctr = Application.Match(Date * 1, Range("A:A"), 0) If IsNumeric(ctr) Then Range("A1")(ctr, 1).EntireRow.Copy 'coller où tu veux Else 'insérer à un emplacement convenable End If End Sub
Cordialement. Daniel "apt" a écrit dans le message de news:
Bonjour,
Comment chercher la date du jour dans une colonne de dates et récupérer tout les données de cette ligne au cas ou elle y, sinon on insere la date du jour à son emplacement convenable.
Merci.
apt
mais comment recuperer les donnees de cette ligne trouvé ?
et puis :
L'insertion de date se fait au cas ou il un saut de date ou une date a été intentionnellement effacer.
par exemple :
Dates 01/04/06 02/04/06 04/04/06
quand on fait notre test on ne trarouvera rien.
alors on doit inserer la date du jour pour avoir un resultat comme suit :
Dates 01/04/06 02/04/06 03/04/06 04/04/06
mais comment recuperer les donnees de cette ligne trouvé ?
et puis :
L'insertion de date se fait au cas ou il un saut de date ou une date a
été intentionnellement effacer.
par exemple :
Dates
01/04/06
02/04/06
04/04/06
quand on fait notre test on ne trarouvera rien.
alors on doit inserer la date du jour pour avoir un resultat comme suit
:
mais comment recuperer les donnees de cette ligne trouvé ?
et puis :
L'insertion de date se fait au cas ou il un saut de date ou une date a été intentionnellement effacer.
par exemple :
Dates 01/04/06 02/04/06 04/04/06
quand on fait notre test on ne trarouvera rien.
alors on doit inserer la date du jour pour avoir un resultat comme suit :
Dates 01/04/06 02/04/06 03/04/06 04/04/06
Daniel
mais comment recuperer les donnees de cette ligne trouvé ?
Dans la macro, j'ai fait un copy de la ligne. A toi de coller la ligne où tu veux et puis :
L'insertion de date se fait au cas ou il un saut de date ou une date a été intentionnellement effacer.
Sub test() Dim ctr ctr = Application.Match(Date * 1, Range("A:A"), 0) If IsNumeric(ctr) Then Range("A1")(ctr, 1).EntireRow.Copy 'coller où tu veux Else ctr = Application.Match(Date * 1, Range("A:A"), 1) Range("A1")(ctr + 1, 1).Insert xlShiftDown Range("A1")(ctr + 1, 1).Value = Date End If End Sub
Daniel
mais comment recuperer les donnees de cette ligne trouvé ?
Dans la macro, j'ai fait un copy de la ligne. A toi de coller la ligne où tu
veux
et puis :
L'insertion de date se fait au cas ou il un saut de date ou une date a
été intentionnellement effacer.
Sub test()
Dim ctr
ctr = Application.Match(Date * 1, Range("A:A"), 0)
If IsNumeric(ctr) Then
Range("A1")(ctr, 1).EntireRow.Copy
'coller où tu veux
Else
ctr = Application.Match(Date * 1, Range("A:A"), 1)
Range("A1")(ctr + 1, 1).Insert xlShiftDown
Range("A1")(ctr + 1, 1).Value = Date
End If
End Sub
mais comment recuperer les donnees de cette ligne trouvé ?
Dans la macro, j'ai fait un copy de la ligne. A toi de coller la ligne où tu veux et puis :
L'insertion de date se fait au cas ou il un saut de date ou une date a été intentionnellement effacer.
Sub test() Dim ctr ctr = Application.Match(Date * 1, Range("A:A"), 0) If IsNumeric(ctr) Then Range("A1")(ctr, 1).EntireRow.Copy 'coller où tu veux Else ctr = Application.Match(Date * 1, Range("A:A"), 1) Range("A1")(ctr + 1, 1).Insert xlShiftDown Range("A1")(ctr + 1, 1).Value = Date End If End Sub
On voit clairement que la date du jour a été inserée aprés le 04-04-06 et non pas aprés le 02-04-06, ... pourquoi?
enfin j'aimerais comprendre les lignes suivantes :
=> ctr = Application.Match(Date * 1, Range("B:B"), 0) => Range("B2")(ctr + 1, 1).Value = Date => ctr est de quel type ? => Si je declare ctr : Dim ctr As Integer ce me donne une erreur ... ??
On voit clairement que la date du jour a été inserée aprés le
04-04-06 et non pas aprés le 02-04-06, ... pourquoi?
enfin j'aimerais comprendre les lignes suivantes :
=> ctr = Application.Match(Date * 1, Range("B:B"), 0)
=> Range("B2")(ctr + 1, 1).Value = Date
=> ctr est de quel type ?
=> Si je declare ctr : Dim ctr As Integer ce me donne une erreur ... ??
On voit clairement que la date du jour a été inserée aprés le 04-04-06 et non pas aprés le 02-04-06, ... pourquoi?
enfin j'aimerais comprendre les lignes suivantes :
=> ctr = Application.Match(Date * 1, Range("B:B"), 0) => Range("B2")(ctr + 1, 1).Value = Date => ctr est de quel type ? => Si je declare ctr : Dim ctr As Integer ce me donne une erreur ... ??
Merci Daniel.
Jacquouille
Bonsoir Je ne comprends rien au Grand Breton, mais ctr n'est-il pas une variable date? Auquel cas, peut-on qualifier une var date en "integer" ? Bonne chance -- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
On voit clairement que la date du jour a été inserée aprés le 04-04-06 et non pas aprés le 02-04-06, ... pourquoi?
enfin j'aimerais comprendre les lignes suivantes :
=> ctr = Application.Match(Date * 1, Range("B:B"), 0) => Range("B2")(ctr + 1, 1).Value = Date => ctr est de quel type ? => Si je declare ctr : Dim ctr As Integer ce me donne une erreur ... ??
Merci Daniel.
Bonsoir
Je ne comprends rien au Grand Breton, mais ctr n'est-il pas une variable
date?
Auquel cas, peut-on qualifier une var date en "integer" ?
Bonne chance
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/
Jacquouille.
"apt" <apitops@gmail.com> a écrit dans le message de news:
1144086309.679359.25680@i39g2000cwa.googlegroups.com...
Par exemple si j'ai cela :
On voit clairement que la date du jour a été inserée aprés le
04-04-06 et non pas aprés le 02-04-06, ... pourquoi?
enfin j'aimerais comprendre les lignes suivantes :
=> ctr = Application.Match(Date * 1, Range("B:B"), 0)
=> Range("B2")(ctr + 1, 1).Value = Date
=> ctr est de quel type ?
=> Si je declare ctr : Dim ctr As Integer ce me donne une erreur ... ??
Bonsoir Je ne comprends rien au Grand Breton, mais ctr n'est-il pas une variable date? Auquel cas, peut-on qualifier une var date en "integer" ? Bonne chance -- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
On voit clairement que la date du jour a été inserée aprés le 04-04-06 et non pas aprés le 02-04-06, ... pourquoi?
enfin j'aimerais comprendre les lignes suivantes :
=> ctr = Application.Match(Date * 1, Range("B:B"), 0) => Range("B2")(ctr + 1, 1).Value = Date => ctr est de quel type ? => Si je declare ctr : Dim ctr As Integer ce me donne une erreur ... ??
On voit clairement que la date du jour a été inserée aprés le 04-04-06 et non pas aprés le 02-04-06, ... pourquoi?
******************* Parce que tu as changé l'énoncé : on avait, dans ton second post :
01/04/06 02/04/06 04/04/06
c'est à dire une séquence dans laquelle MANQUE la date du jour. on a maintenant une valeur quelconque A LA PLACE de la date du jour. Le code suivant répond au cas exposé dans ce post, mais ne répond plus au précédent. Il faut savoir comment sont organisées tes données.
Sub test() Dim ctr ctr = Application.Match(Date * 1, Range("A:A"), 0) If IsNumeric(ctr) Then Range("A1")(ctr, 1).EntireRow.Copy 'coller où tu veux Else ctr = Application.Match(Date * 1, Range("A:A"), 2) Range("A1")(ctr, 1).Value = Date End If End Sub
*******************
enfin j'aimerais comprendre les lignes suivantes :
application.match correspond à la fonction EQUIV (soit une recherche de la date du jour ("Date" représente par définition la date système) (oublie poour le moment le "*1" qui fait que ça marche) et renvoie dans la variable "ctr" le numéro de ligne si la recherche est fructueuse; dans le cas contraire, ctr reçoit un code genre "erreur 2002".
=> Range("B2")(ctr + 1, 1).Value = Date Là c'est un peu du vice : Range("B2")(2,2) est équivalent à Range("B2").Offset(1,1) c'est à dire un décalage d'une ligne et d'une colonne par rapport à B2 (soit C3). "Date" représente par définition la date système. Donc Range("B2")(ctr + 1, 1).Value prend la valeur de la date système.
=> ctr est de quel type ? De type Variant puisque comme je te l'ai expliqué plus haut, il est tantôt numérique tantôt de valeur String.
=> Si je declare ctr : Dim ctr As Integer ce me donne une erreur ... ?? Oui en cas d'échec de la recherche (fonction Match), celle-ci renvoie du texte ( et tu peux le voir puisqu'on teste si elle est numérique : If IsNumeric(ctr)...). Tu peux le déclarer: Dim ctr as Variant ou dim ctr (variant par défaut).
Daniel
"apt" <apitops@gmail.com> a écrit dans le message de news:
1144086309.679359.25680@i39g2000cwa.googlegroups.com...
Par exemple si j'ai cela :
On voit clairement que la date du jour a été inserée aprés le
04-04-06 et non pas aprés le 02-04-06, ... pourquoi?
*******************
Parce que tu as changé l'énoncé :
on avait, dans ton second post :
01/04/06
02/04/06
04/04/06
c'est à dire une séquence dans laquelle MANQUE la date du jour.
on a maintenant une valeur quelconque A LA PLACE de la date du jour. Le code
suivant répond au cas exposé dans ce post, mais ne répond plus au précédent.
Il faut savoir comment sont organisées tes données.
Sub test()
Dim ctr
ctr = Application.Match(Date * 1, Range("A:A"), 0)
If IsNumeric(ctr) Then
Range("A1")(ctr, 1).EntireRow.Copy
'coller où tu veux
Else
ctr = Application.Match(Date * 1, Range("A:A"), 2)
Range("A1")(ctr, 1).Value = Date
End If
End Sub
*******************
enfin j'aimerais comprendre les lignes suivantes :
application.match correspond à la fonction EQUIV (soit une recherche de la
date du jour ("Date" représente par définition la date système)
(oublie poour le moment le "*1" qui fait que ça marche) et renvoie dans la
variable "ctr" le numéro de ligne si la recherche est fructueuse; dans le
cas contraire, ctr reçoit un code genre "erreur 2002".
=> Range("B2")(ctr + 1, 1).Value = Date
Là c'est un peu du vice : Range("B2")(2,2) est équivalent à
Range("B2").Offset(1,1) c'est à dire un décalage d'une ligne et d'une
colonne par rapport à B2 (soit C3). "Date" représente par définition la date
système. Donc Range("B2")(ctr + 1, 1).Value prend la valeur de la date
système.
=> ctr est de quel type ?
De type Variant puisque comme je te l'ai expliqué plus haut, il est tantôt
numérique tantôt de valeur String.
=> Si je declare ctr : Dim ctr As Integer ce me donne une erreur ... ??
Oui en cas d'échec de la recherche (fonction Match), celle-ci renvoie du
texte ( et tu peux le voir puisqu'on teste si elle est numérique : If
IsNumeric(ctr)...). Tu peux le déclarer:
Dim ctr as Variant ou dim ctr (variant par défaut).
On voit clairement que la date du jour a été inserée aprés le 04-04-06 et non pas aprés le 02-04-06, ... pourquoi?
******************* Parce que tu as changé l'énoncé : on avait, dans ton second post :
01/04/06 02/04/06 04/04/06
c'est à dire une séquence dans laquelle MANQUE la date du jour. on a maintenant une valeur quelconque A LA PLACE de la date du jour. Le code suivant répond au cas exposé dans ce post, mais ne répond plus au précédent. Il faut savoir comment sont organisées tes données.
Sub test() Dim ctr ctr = Application.Match(Date * 1, Range("A:A"), 0) If IsNumeric(ctr) Then Range("A1")(ctr, 1).EntireRow.Copy 'coller où tu veux Else ctr = Application.Match(Date * 1, Range("A:A"), 2) Range("A1")(ctr, 1).Value = Date End If End Sub
*******************
enfin j'aimerais comprendre les lignes suivantes :
application.match correspond à la fonction EQUIV (soit une recherche de la date du jour ("Date" représente par définition la date système) (oublie poour le moment le "*1" qui fait que ça marche) et renvoie dans la variable "ctr" le numéro de ligne si la recherche est fructueuse; dans le cas contraire, ctr reçoit un code genre "erreur 2002".
=> Range("B2")(ctr + 1, 1).Value = Date Là c'est un peu du vice : Range("B2")(2,2) est équivalent à Range("B2").Offset(1,1) c'est à dire un décalage d'une ligne et d'une colonne par rapport à B2 (soit C3). "Date" représente par définition la date système. Donc Range("B2")(ctr + 1, 1).Value prend la valeur de la date système.
=> ctr est de quel type ? De type Variant puisque comme je te l'ai expliqué plus haut, il est tantôt numérique tantôt de valeur String.
=> Si je declare ctr : Dim ctr As Integer ce me donne une erreur ... ?? Oui en cas d'échec de la recherche (fonction Match), celle-ci renvoie du texte ( et tu peux le voir puisqu'on teste si elle est numérique : If IsNumeric(ctr)...). Tu peux le déclarer: Dim ctr as Variant ou dim ctr (variant par défaut).
Daniel
apt
Je m'excuse Daniel.
Pour ton code, il faut inserer une ligne vide, sinon on ecrase la valeur de la cellule courante. (premier code avec modification du deuxieme code)
'--------------------------------------- Public Nsem As Integer
Private Sub TrouveDate() Dim ctr
ctr = Application.Match(Date * 1, Range("B:B"), 0) If IsNumeric(ctr) Then Range("D1")(ctr, 2).Value = "N° de ligne est = " & ctr Else ctr = Application.Match(Date * 1, Range("B:B"), 2) Range("B2")(ctr, 1).Insert xlShiftDown Range("B2")(ctr, 1).Value = Date Range("D1")(ctr, 2).Value = "N° de ligne est = " & ctr End If Nsem = Range("A1")(ctr, 1).Value Range("D1")(ctr + 1, 2).Value = "N° Semaine est = " & Nsem TrouvePlage (Nsem) End Sub
'--------------------------------
Private Sub TrouvePlage(Val As Integer) Dim Debut, Fin, vFin, ComptPlg, Lig Lig = Application.Match(Val * 1, Range("A:A"), 0) If IsNumeric(ctr) Then 'Valeur de la 2eme Col qui corresponde Debut = Range("B2")(Lig, 1).Value 'et puis on doit continuer pour trouver la derniere occurence ComptPlg = 1 While IsNumeric(vFin) vFin = Application.Match(Val * 1, Range("A:A"), ComptPlg) ComptPlg = ComptPlg + 1 Wend Fin = Range("B2")(vFin, 1).Value End If MsgBox "La valeur " & Val & " se trouve dans la plage du " & Debut & " au " & Fin End Sub '-------------------------------------
Resultat qui doit etre obtenue :
La valeur 14 se trouve dans la plage du 01-04-06 au 07-04-06.
Merci.
Je m'excuse Daniel.
Pour ton code, il faut inserer une ligne vide, sinon on ecrase la
valeur de la cellule courante. (premier code avec modification du
deuxieme code)
'---------------------------------------
Public Nsem As Integer
Private Sub TrouveDate()
Dim ctr
ctr = Application.Match(Date * 1, Range("B:B"), 0)
If IsNumeric(ctr) Then
Range("D1")(ctr, 2).Value = "N° de ligne est = " & ctr
Else
ctr = Application.Match(Date * 1, Range("B:B"), 2)
Range("B2")(ctr, 1).Insert xlShiftDown
Range("B2")(ctr, 1).Value = Date
Range("D1")(ctr, 2).Value = "N° de ligne est = " & ctr
End If
Nsem = Range("A1")(ctr, 1).Value
Range("D1")(ctr + 1, 2).Value = "N° Semaine est = " & Nsem
TrouvePlage (Nsem)
End Sub
'--------------------------------
Private Sub TrouvePlage(Val As Integer)
Dim Debut, Fin, vFin, ComptPlg, Lig
Lig = Application.Match(Val * 1, Range("A:A"), 0)
If IsNumeric(ctr) Then
'Valeur de la 2eme Col qui corresponde
Debut = Range("B2")(Lig, 1).Value
'et puis on doit continuer pour trouver la derniere occurence
ComptPlg = 1
While IsNumeric(vFin)
vFin = Application.Match(Val * 1, Range("A:A"), ComptPlg)
ComptPlg = ComptPlg + 1
Wend
Fin = Range("B2")(vFin, 1).Value
End If
MsgBox "La valeur " & Val & " se trouve dans la plage du " & Debut &
" au " & Fin
End Sub
'-------------------------------------
Resultat qui doit etre obtenue :
La valeur 14 se trouve dans la plage du 01-04-06 au 07-04-06.
'--------------------------------------- Public Nsem As Integer
Private Sub TrouveDate() Dim ctr
ctr = Application.Match(Date * 1, Range("B:B"), 0) If IsNumeric(ctr) Then Range("D1")(ctr, 2).Value = "N° de ligne est = " & ctr Else ctr = Application.Match(Date * 1, Range("B:B"), 2) Range("B2")(ctr, 1).Insert xlShiftDown Range("B2")(ctr, 1).Value = Date Range("D1")(ctr, 2).Value = "N° de ligne est = " & ctr End If Nsem = Range("A1")(ctr, 1).Value Range("D1")(ctr + 1, 2).Value = "N° Semaine est = " & Nsem TrouvePlage (Nsem) End Sub
'--------------------------------
Private Sub TrouvePlage(Val As Integer) Dim Debut, Fin, vFin, ComptPlg, Lig Lig = Application.Match(Val * 1, Range("A:A"), 0) If IsNumeric(ctr) Then 'Valeur de la 2eme Col qui corresponde Debut = Range("B2")(Lig, 1).Value 'et puis on doit continuer pour trouver la derniere occurence ComptPlg = 1 While IsNumeric(vFin) vFin = Application.Match(Val * 1, Range("A:A"), ComptPlg) ComptPlg = ComptPlg + 1 Wend Fin = Range("B2")(vFin, 1).Value End If MsgBox "La valeur " & Val & " se trouve dans la plage du " & Debut & " au " & Fin End Sub '-------------------------------------
Resultat qui doit etre obtenue :
La valeur 14 se trouve dans la plage du 01-04-06 au 07-04-06.