Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 [VBA] erreur 424 objet requis [Résolu]

tangiwankenobi44

XLDnaute Nouveau
Bonjour,
J'ai une erreur 424 'objet requis' sur un bout de code et je ne comprends pas. L'erreur survient lors du positionnement sur la premiere ligne vide (en gras). Pourtant, ca a l'air de bien se positionner. Alors je me suis dit que ca pouvait venir du fait que je venais d'ouvrir un fichier different, donc j'ai fait dans le meme classeur et j'ai la meme erreur puis j'ai bidouillé pour éviter ma ligne qui coince et du coup j'ai une erreur 1004, erreur definie par l'application ou l'objet, que je comprend encore moins, sur la ligne suivante (celle ou j'assigne dateJourOperation à la premiere cellule)
La je ne sais plus quoi essayer.. Alors si quelqu'un saurait me donner des idées.
J'ai deja pourtant utilisé ce genre de positionnement sur la derniere ligne occupee avec ce meme code...
Merci d'avance
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour tangiwankenobi, Dranreb, le forum

Bonjour et bienvenue sur XLD, tangiwankenobi44 , si tu ne l'as pas déjà fait, un petit tour par la Charte Xld t'expliquera comment fonctionne le forum !
Pour ton code, plusieurs choses :
Comme l'a dit Dranreb, il faut utiliser Rows.Count, au lieu de Row.Count, qui renverra le nombre de lignes maximum de la feuille active.
ensuite tu as défini premiereLigne en Integer ce qui limite les importations à 32767 lignes et provoque une erreur sur un nombre de lignes importé plus conséquent, renvoyer le nombre de lignes maximum avec Rows.Count est inutile dans ce cas, autant écrire 32767. Pour un code plus correct, il faut définir premiereLigne en Long avec Dim premiereLigne as Long ou Dim premiereLigne& ce qui est la même chose en plus court.
Ensuite, tu ne mets pas de qualificateur à Rows il est donc rattaché à la feuille active ce qui ne pose pas problème dans le cas précis de ton code car tu ouvres un classeur Xlsx qui devient le classeur actif.
Dans certains cas, cela pourrait pourtant poser problème sur un grand nombre de données (supérieur à 65536) sur un classeur Xlsx (1048576 lignes par feuille) si le classeur actif au moment de la définition de premiereLigne est un fichier Xls (65536 lignes par feuille) ou provoquer une erreur 1004 dans le cas inverse en renvoyant lors de la commande un nombre de lignes supérieur à celui de la feuille examinée.
Pour un code globalement plus générique et re utilisable :
VB:
Dim premiereLigne&
With Worksheets("UCESO_BV+RCY"): premiereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row + 1: End With

Je te souhaite une Excellente journée sur Xld.

Bien cordialement, @+
 

tangiwankenobi44

XLDnaute Nouveau
Bonjour Yeahou,
MERCI Beaucoup aussi pour ta réponse très complète qui me montre d'autres potentielles sources d'erreurs (pour la porchaine fois j'espère)
Alors, avant d'arriver à 65000 lignes dans ce fichier, il va se passer quelques années mais c'est bien d'avoir conscience des potentiels trucs qui vont merder. D'autant que j'essaie de proscrire les xls et met xlsx tant que je peux. Mais je vais mettre un long à la place d'integer, ce sera plus propre
Et je vais aussi ajouter la 2e modif que tu proposes. Je me suis posé d'ailleurs la question de faire un select sur le workbook avant mais comme je venais de l'ouvrir, ca ne posais pas de pb à excel .
Vraiment merci beaucoup de votre aide.
Je vous souhaite une excellente journée (pluvieuse et devant l'ordi du coup pour moi)
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…