Bonjour Mishell,
A ) d'abord, je n'ai regardé que la première procédure de ta démonstration
:
Trouver_Tout(CDate(nombre), Range("B:B"), xlFormulas, xlWhole).Select
**** Elle réussit à retenir et sélectionner les cellules contenant ceci :
J'ai fait un copier-coller à partir du contenu de ces
cellules dans la barre de formule suite à l'exécution de la
procédure "Mettre_les_donnees_sur_la_feuille"
En B13 -> 09-03-2006 Cellule Format date
B14 -> 09-03-2006 Cellule Format date
ET
B19 -> 3/9/2006 Cellule Format Texte
**** C'est un tour de force, avec la même procédure, et une même
variable (nombre8785) passée en paramètre à la procédure,
tu réussis à sélectionner ces 3 cellules représentant 2 dates
différentes et 2 formats différents de cellule.
**** Dans ta procédure : "Mettre_les_donnees_sur_la_feuille"
tu utilises ceci pour renseigner le contenu de la cellule B19
Range("B19").Select
ActiveCell.Formula = "3/9/2006"
On reconnaît que "3/9/2006" est la représentation au
format américain du contenu de la cellule B14 : 09-03-2006
Que sait-il passé ? Comme tu as retenu la propriété "Formula"
pour définir le contenu de la cellule B19, Microsoft
énonce
cette remarque dans l'aide d'Excel-vba sur cette
propriété :
Copier-coller d'une partie de l'aide sur la propriété Formula d'Excel
'***************************
Si vous affectez une date à la formule d'une cellule, Microsoft Excel
vérifie si la
cellule est déjà dotée de l'un des formats numériques ou de date. Si tel
n'est pas le cas,
Microsoft Excel lui affecte le format de date numérique par défaut
'***************************
Selon moi, Excel enregistre à l'interne une "date" et bien attendu comme
cela provient de
l'interface VBA, son format est américain. C'est ce qui "expliquerait"
qu'il puisse
reconnaître le contenu de cette cellule en utilisant XlLookIn:=XlFormula.
****Si tu veux faire davantage de test sur la colonne B:B de ton fichier
exemple, utilise
la commande "Rechercher" du menu "édition". L'interface graphique te
permet de définir au
besoin
le paramètre "Formule" ou "Valeur". Les observations que j'ai faites vos
dans le sens des
explications que j'ai énoncées. Pour l'instant et jusqu'à preuve du
contraire, c'est ma
perception de la chose !
****Ceci étant dit, je n'ai rien à vendre, que le paramètre de xlLookIn
soit xlvalues ou
xlformulas, ce n'est pas la quintessence de mon propos. Mon objectif est
surtout de
comprendre la mécanique de ce paramètre afin de pouvoir faire un usage
éclairé de la
méthode "Find" lors d'une recherche sur les "dates". Quand il s'agit de
date dans excel,
il faut se méfier des automatismes et des copier-coller trop faciles...
Bonjour Mishell,
A ) d'abord, je n'ai regardé que la première procédure de ta démonstration
:
Trouver_Tout(CDate(nombre), Range("B:B"), xlFormulas, xlWhole).Select
**** Elle réussit à retenir et sélectionner les cellules contenant ceci :
J'ai fait un copier-coller à partir du contenu de ces
cellules dans la barre de formule suite à l'exécution de la
procédure "Mettre_les_donnees_sur_la_feuille"
En B13 -> 09-03-2006 Cellule Format date
B14 -> 09-03-2006 Cellule Format date
ET
B19 -> 3/9/2006 Cellule Format Texte
**** C'est un tour de force, avec la même procédure, et une même
variable (nombre8785) passée en paramètre à la procédure,
tu réussis à sélectionner ces 3 cellules représentant 2 dates
différentes et 2 formats différents de cellule.
**** Dans ta procédure : "Mettre_les_donnees_sur_la_feuille"
tu utilises ceci pour renseigner le contenu de la cellule B19
Range("B19").Select
ActiveCell.Formula = "3/9/2006"
On reconnaît que "3/9/2006" est la représentation au
format américain du contenu de la cellule B14 : 09-03-2006
Que sait-il passé ? Comme tu as retenu la propriété "Formula"
pour définir le contenu de la cellule B19, Microsoft
énonce
cette remarque dans l'aide d'Excel-vba sur cette
propriété :
Copier-coller d'une partie de l'aide sur la propriété Formula d'Excel
'***************************
Si vous affectez une date à la formule d'une cellule, Microsoft Excel
vérifie si la
cellule est déjà dotée de l'un des formats numériques ou de date. Si tel
n'est pas le cas,
Microsoft Excel lui affecte le format de date numérique par défaut
'***************************
Selon moi, Excel enregistre à l'interne une "date" et bien attendu comme
cela provient de
l'interface VBA, son format est américain. C'est ce qui "expliquerait"
qu'il puisse
reconnaître le contenu de cette cellule en utilisant XlLookIn:=XlFormula.
****Si tu veux faire davantage de test sur la colonne B:B de ton fichier
exemple, utilise
la commande "Rechercher" du menu "édition". L'interface graphique te
permet de définir au
besoin
le paramètre "Formule" ou "Valeur". Les observations que j'ai faites vos
dans le sens des
explications que j'ai énoncées. Pour l'instant et jusqu'à preuve du
contraire, c'est ma
perception de la chose !
****Ceci étant dit, je n'ai rien à vendre, que le paramètre de xlLookIn
soit xlvalues ou
xlformulas, ce n'est pas la quintessence de mon propos. Mon objectif est
surtout de
comprendre la mécanique de ce paramètre afin de pouvoir faire un usage
éclairé de la
méthode "Find" lors d'une recherche sur les "dates". Quand il s'agit de
date dans excel,
il faut se méfier des automatismes et des copier-coller trop faciles...
Bonjour Mishell,
A ) d'abord, je n'ai regardé que la première procédure de ta démonstration
:
Trouver_Tout(CDate(nombre), Range("B:B"), xlFormulas, xlWhole).Select
**** Elle réussit à retenir et sélectionner les cellules contenant ceci :
J'ai fait un copier-coller à partir du contenu de ces
cellules dans la barre de formule suite à l'exécution de la
procédure "Mettre_les_donnees_sur_la_feuille"
En B13 -> 09-03-2006 Cellule Format date
B14 -> 09-03-2006 Cellule Format date
ET
B19 -> 3/9/2006 Cellule Format Texte
**** C'est un tour de force, avec la même procédure, et une même
variable (nombre8785) passée en paramètre à la procédure,
tu réussis à sélectionner ces 3 cellules représentant 2 dates
différentes et 2 formats différents de cellule.
**** Dans ta procédure : "Mettre_les_donnees_sur_la_feuille"
tu utilises ceci pour renseigner le contenu de la cellule B19
Range("B19").Select
ActiveCell.Formula = "3/9/2006"
On reconnaît que "3/9/2006" est la représentation au
format américain du contenu de la cellule B14 : 09-03-2006
Que sait-il passé ? Comme tu as retenu la propriété "Formula"
pour définir le contenu de la cellule B19, Microsoft
énonce
cette remarque dans l'aide d'Excel-vba sur cette
propriété :
Copier-coller d'une partie de l'aide sur la propriété Formula d'Excel
'***************************
Si vous affectez une date à la formule d'une cellule, Microsoft Excel
vérifie si la
cellule est déjà dotée de l'un des formats numériques ou de date. Si tel
n'est pas le cas,
Microsoft Excel lui affecte le format de date numérique par défaut
'***************************
Selon moi, Excel enregistre à l'interne une "date" et bien attendu comme
cela provient de
l'interface VBA, son format est américain. C'est ce qui "expliquerait"
qu'il puisse
reconnaître le contenu de cette cellule en utilisant XlLookIn:=XlFormula.
****Si tu veux faire davantage de test sur la colonne B:B de ton fichier
exemple, utilise
la commande "Rechercher" du menu "édition". L'interface graphique te
permet de définir au
besoin
le paramètre "Formule" ou "Valeur". Les observations que j'ai faites vos
dans le sens des
explications que j'ai énoncées. Pour l'instant et jusqu'à preuve du
contraire, c'est ma
perception de la chose !
****Ceci étant dit, je n'ai rien à vendre, que le paramètre de xlLookIn
soit xlvalues ou
xlformulas, ce n'est pas la quintessence de mon propos. Mon objectif est
surtout de
comprendre la mécanique de ce paramètre afin de pouvoir faire un usage
éclairé de la
méthode "Find" lors d'une recherche sur les "dates". Quand il s'agit de
date dans excel,
il faut se méfier des automatismes et des copier-coller trop faciles...
Merci pour votre aide
ptck
"MichDenis" a écrit dans le message de news:Bonjour Mishell,
Je ne répéterais pas ici ce que tu peux lire dans le commentaire
que j'ai commis sur le sujet là : http://excelabo.net/pasapas/find-date
avec la méthode "Find" pour rechercher une date, il n'y a pas une
façon de définir les paramètres qui fassent mouche à tout coup.
A ) L'usager doit savoir d'abord ce qu'il cherche (une date émanant
d'une formule ou d'une saisie dans une cellule ou peut-être les 2
avant de déterminer la nature des paramètres, voire si la méthode
est appropriée dans les circonstances.
B ) Que contiennent les autres cellules dans la plage scrutée par la
méthode Find ?
C ) Se rappeler que la méthode "Find" recherche toujours une chaîne
de caractères passée par l'argument "What" à la méthode.
D ) La méthode "Find" utilise la propriété "Formula" ou "Value"
que retourne un objet "Range" pour évaluer si la chaîne du
paramètre "What" est "=" à la chaîne de caractère retournée
par la propriété "Formula" ou "Value" de la cellule selon que l'on
a retenue l'une ou l'autre lorsque l'on a défini le paramètre
"LookIn".
C'est là la vraie signification des constantes "XlFormulas" ou
"xlvalues"
de l'argument "LookIn" de la méthode Find.
Ceci étant dit,
| Pour Chercher une date avec Find(),
| le critère LookIn:= doit être xlFormulas.
****Ça dépend du contenu de la plage de cellules !
| Si on Cherche une date avec xlFormulas :
| Les cellules au format Date
| et les cellules au format Texte contenant une date valide
| feront partie des résultats de la recherche.
****Sauf erreur, cet énoncé est inexact :
Si A1 contient une date reconnue dans un format date compris par
Excel
x = Range("A1").Formula -> renvoie : "39949"
Si B1 est au format texte, mais contient une date habituellement
reconnue par Excel
x = Range("B1").Formula -> renvoie : "16-05-09"
La méthode "Find" ne peut pas trouver les 2 cellules avec
XlFormulas
SAUF si on passe à l'argument "What" une variable d'un type
"String"
une fois et une variable d'un type "Date" une autre fois.
Variable type date - > elle trouve A1
Variable Type String -> elle trouve B1
En conséquence, tu dois faire un choix et l'une des
2 sera exclue selon ton choix.
| Si on Cherche une date avec xlValues :
**** Je pourrais répéter le même commentaire que précédemment
mais cette fois avec XlValues
P.S - J'arrête ici. Il y a un grand professeur qui me coure après
avec sa piqure. J'arrête avant qu'il s'énerve un peu trop !
Merci pour votre aide
ptck
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
uf3ndoj1JHA.1372@TK2MSFTNGP05.phx.gbl...
Bonjour Mishell,
Je ne répéterais pas ici ce que tu peux lire dans le commentaire
que j'ai commis sur le sujet là : http://excelabo.net/pasapas/find-date
avec la méthode "Find" pour rechercher une date, il n'y a pas une
façon de définir les paramètres qui fassent mouche à tout coup.
A ) L'usager doit savoir d'abord ce qu'il cherche (une date émanant
d'une formule ou d'une saisie dans une cellule ou peut-être les 2
avant de déterminer la nature des paramètres, voire si la méthode
est appropriée dans les circonstances.
B ) Que contiennent les autres cellules dans la plage scrutée par la
méthode Find ?
C ) Se rappeler que la méthode "Find" recherche toujours une chaîne
de caractères passée par l'argument "What" à la méthode.
D ) La méthode "Find" utilise la propriété "Formula" ou "Value"
que retourne un objet "Range" pour évaluer si la chaîne du
paramètre "What" est "=" à la chaîne de caractère retournée
par la propriété "Formula" ou "Value" de la cellule selon que l'on
a retenue l'une ou l'autre lorsque l'on a défini le paramètre
"LookIn".
C'est là la vraie signification des constantes "XlFormulas" ou
"xlvalues"
de l'argument "LookIn" de la méthode Find.
Ceci étant dit,
| Pour Chercher une date avec Find(),
| le critère LookIn:= doit être xlFormulas.
****Ça dépend du contenu de la plage de cellules !
| Si on Cherche une date avec xlFormulas :
| Les cellules au format Date
| et les cellules au format Texte contenant une date valide
| feront partie des résultats de la recherche.
****Sauf erreur, cet énoncé est inexact :
Si A1 contient une date reconnue dans un format date compris par
Excel
x = Range("A1").Formula -> renvoie : "39949"
Si B1 est au format texte, mais contient une date habituellement
reconnue par Excel
x = Range("B1").Formula -> renvoie : "16-05-09"
La méthode "Find" ne peut pas trouver les 2 cellules avec
XlFormulas
SAUF si on passe à l'argument "What" une variable d'un type
"String"
une fois et une variable d'un type "Date" une autre fois.
Variable type date - > elle trouve A1
Variable Type String -> elle trouve B1
En conséquence, tu dois faire un choix et l'une des
2 sera exclue selon ton choix.
| Si on Cherche une date avec xlValues :
**** Je pourrais répéter le même commentaire que précédemment
mais cette fois avec XlValues
P.S - J'arrête ici. Il y a un grand professeur qui me coure après
avec sa piqure. J'arrête avant qu'il s'énerve un peu trop !
Merci pour votre aide
ptck
"MichDenis" a écrit dans le message de news:Bonjour Mishell,
Je ne répéterais pas ici ce que tu peux lire dans le commentaire
que j'ai commis sur le sujet là : http://excelabo.net/pasapas/find-date
avec la méthode "Find" pour rechercher une date, il n'y a pas une
façon de définir les paramètres qui fassent mouche à tout coup.
A ) L'usager doit savoir d'abord ce qu'il cherche (une date émanant
d'une formule ou d'une saisie dans une cellule ou peut-être les 2
avant de déterminer la nature des paramètres, voire si la méthode
est appropriée dans les circonstances.
B ) Que contiennent les autres cellules dans la plage scrutée par la
méthode Find ?
C ) Se rappeler que la méthode "Find" recherche toujours une chaîne
de caractères passée par l'argument "What" à la méthode.
D ) La méthode "Find" utilise la propriété "Formula" ou "Value"
que retourne un objet "Range" pour évaluer si la chaîne du
paramètre "What" est "=" à la chaîne de caractère retournée
par la propriété "Formula" ou "Value" de la cellule selon que l'on
a retenue l'une ou l'autre lorsque l'on a défini le paramètre
"LookIn".
C'est là la vraie signification des constantes "XlFormulas" ou
"xlvalues"
de l'argument "LookIn" de la méthode Find.
Ceci étant dit,
| Pour Chercher une date avec Find(),
| le critère LookIn:= doit être xlFormulas.
****Ça dépend du contenu de la plage de cellules !
| Si on Cherche une date avec xlFormulas :
| Les cellules au format Date
| et les cellules au format Texte contenant une date valide
| feront partie des résultats de la recherche.
****Sauf erreur, cet énoncé est inexact :
Si A1 contient une date reconnue dans un format date compris par
Excel
x = Range("A1").Formula -> renvoie : "39949"
Si B1 est au format texte, mais contient une date habituellement
reconnue par Excel
x = Range("B1").Formula -> renvoie : "16-05-09"
La méthode "Find" ne peut pas trouver les 2 cellules avec
XlFormulas
SAUF si on passe à l'argument "What" une variable d'un type
"String"
une fois et une variable d'un type "Date" une autre fois.
Variable type date - > elle trouve A1
Variable Type String -> elle trouve B1
En conséquence, tu dois faire un choix et l'une des
2 sera exclue selon ton choix.
| Si on Cherche une date avec xlValues :
**** Je pourrais répéter le même commentaire que précédemment
mais cette fois avec XlValues
P.S - J'arrête ici. Il y a un grand professeur qui me coure après
avec sa piqure. J'arrête avant qu'il s'énerve un peu trop !