|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Bonjour à tous, je lis depuis Access des fichiers excel pour alimenter des tables access.
Je souhaite controler que dans les cellules des fichiers excel, on ai bien renseigné une valeur et qu'elle soit numérique. Certaines cellules contiennent des formules et quand les formules ne résulte pas, par exemple une division par 0, on a dans la cellule #DIV/0!. Vu que j'ai une dizaine de cellule a controler et pour ne pas faire ces controles dans la procédure principal, j'ai crée une fonction dans laquelle je passe le contenu de ces cellules. Les parametres de cette fonction sont déclarés en string. Et bien entendu quand on a #DIV/0! dans la cellule j'ai une erreur de type mismtach a l'appel de la fonction de controle. Je ne sais pas trop comment gérer cela, si quelqu'un à déja rencontrer ce type de soucis ça serait cool s'il pouvait m'aider. Merci beaucoup |
|
|
00
|
|
|
#2 | ||||
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Bonjour à tous et merci à ceux qui se sont intéressé à mon problème.
J'ai peu être trouvé une solution mais je ne sais pas si c'est très propre et j'espère que certains d'entre vous pourront me conseiller. J'ai créer des variables de type Variant et j'ai affecté le contenu des cellules dans ces variables et la il n'y a plus d'erreur de type mismatch. Dans la fonction qui va faire les controles, j'ai également déclarer les paramètres en type variant et la plus de problème à l'appel de la fonction. Ensuite je peux tester si la valeur de la variable est null et si elle est numérique. Mais bon je sais pas si c'est la bonne solution... Le code : Code :
Code :
|
||||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Dans la fonction de controle, j'ai un probleme, la fonction isnull renvoi false quand la cellule du fichier excel est vide. je m'attendais a avoir true puisque la cellule est vide.
Quelqu'un a une idée ? Merci beaucoup de votre aide. |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Bonjour, je pense que ce serait mieux de détecter si une cellule dans excel contient une formule et si cette formule à aboutit plutot que d'affecter le contenu de la formule a une variable de type variant.
Ca serait plus propre mais je sais pas si c'est possible. Merci |
|
|
00
|
|
|
#5 | ||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
A priori, on peut savoir si une cellule est en erreur, en testant le type de sa propriété Value, avec VarType(..). Exemple de code Access qui lit des cellules Excel : Code :
Dans mon code j'utilise la méthode Range pour faire référence à une cellule. C'est équivalent à Cells(..,..) dans ton code. Les deux renvoie un objet de type Excel.Range. Pour tester les cellules vides, j'utilise la fonction VBA IsEmpty(..). La notion de Null n'existe pas dans Excel. C'est Empty. Par exemple, pour vider une cellule référencée par un objet rg de type Excel.Range : Code :
If Not IsEmpty(rg.Value) Then rg = Empty |
||
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Bonjour LedZeppII et merci pour ta réponse, je vais utiliser
Pour tester mes cellules. Mais comme j'ai une dizaine de cellule a controler j'ai créer une fonction pour le faire qui renvoie vrai si les controles sont ok et faux sinon. Pour ce faire si je déclare les paremetres de cette fonction en string, quand la cellule est en erreur ça fait un type mismatch. Par contre, quand je déclare les parametre en type variant, la il n'y a plus de problème. Penses-tu que ce soit une bonne solution ? Si vraiment tu me dis que ce n'est pas propre ben je mettrais tous mes controles dans la procédure principal sans faire de fonction... Ca alourdira un peu la procédure principal mais tant pis. Merci beaucoup |
|
|
00
|
|
|
#7 | ||||||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 939 ![]() |
Bonjour,
Citation:
Citation:
J'ai ajouté la déclaration d'une variable de type Variant modifié ma boucle Code :
Code :
|
||||||
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Super j'ai tapé dans le mille avec la variable de type variant. Et j'utilise a présent VarType pour savoir si la cellule est en erreur. C'est propre et c'est exactement ce que je voulais merci beaucoup A bientot.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com