Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
809 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sélectionner une plage jusqu'à la dernière ligne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sélectionner une plage jusqu'à la dernière ligne

n°2240818
imfr
Posté le 21-10-2014 à 08:44:47  profilanswer
 

Bonjour,
Malgré que ce sujet ne soit pas nouveau, je ne trouve pas la réponse à mon problème. Il faut savoir que mes connaissances en vba sont limitées.
J'ai une macro en vba qui tourne sous Word. Celle ci ouvre un fichier Excel (jusque là pas de problème) dans lequel je cherche à copier un tableau dont je ne connais pas le nombre de ligne (A1 à Jx). Enfin je souhaite coller le tableau dans mon document Word.
La fonction de sélection fonctionne bien si je fais cette commande dans Excel mais pas sous Word.  
Ci-dessous un extrait du code où je rencontre le problème. Merci d'avance pour votre aide.
 
Set appexcel = CreateObject("Excel.Application" )
appexcel.Visible = True
Set wbExcel = appexcel.Workbooks.Open("C:\InputDeviceSystem1.xlsx" )
 
derlig = source.Sheets(1).[A65536].End(xlUp).Row
source.Sheets(1).range("A1:J" & derlig).Copy  
Selection.Paste

mood
Publicité
Posté le 21-10-2014 à 08:44:47  profilanswer
 

n°2240821
Marc L
Posté le 21-10-2014 à 09:01:36  profilanswer
 

 
           Bonjour,
 
           pourtant il y a ce qu'il faut dans ce forum, sujet récurrent …
 
           Si le tableau est un bloc contigu, voir dans l'aide VBA la propriété CurrentRegion
 

n°2240823
kiki29
Posté le 21-10-2014 à 09:15:20  profilanswer
 

Salut, de quoi satisfaire ta curiosité http://www.developpez.net/forums/d [...] d-feuille/


---------------
Myanmar 90/91 : http://gadaud.gerard.free.fr/publi [...] index.html
n°2240841
Marc L
Posté le 21-10-2014 à 12:00:31  profilanswer
 

 
           Salut Philippe !
 
           Là il s'agit d'un problème de logique de son code mais j'attends qu'il soit balisé conformément aux règles du forum !
 
           Il pourrait aussi utiliser la propriété UsedRange pour effectuer la copie
           ou encore la propriété Range si c'est un tableau défini …
 

n°2240842
imfr
Posté le 21-10-2014 à 12:07:23  profilanswer
 

Merci pour vos réponses.
J'ai déjà essayé CurrentRegion qui fonctionne bien partir d'une macro faite sous Excel mais sous Word je n'y arrive pas.
Si par exemple dans mon code j'utilise range("B3" ).CurrentRegion.Select j'ai une erreur de compilation (sub ou fonction non défini)
 

n°2240848
Marc L
Posté le 21-10-2014 à 13:09:42  profilanswer
 

 
           Oui normal si c'est écrit comme le code présenté initialement …
           Merci de l'éditer et d'utiliser l'icône dédiée pour le baliser !
 
           La propriété CurrentRegion n'existe pas dans Word mais ne pose pas de souci dans un code VBA Word via un objet Excel;
           commencer par vérifier la logique et les variables utilisées …
 

n°2240851
imfr
Posté le 21-10-2014 à 13:25:11  profilanswer
 

C'est pas de la mauvaise volonté, mais j'utilise le forum pour la première fois et comme je le précise au début du topic, mes connaissances en vba sont limités, alors les balises pour moi c'est très flou.
J'espère que le code ci dessous répond à vos attentes.
 
1. Set appexcel = CreateObject("Excel.Application" )  
2. appexcel.Visible = True  
3. Set wbExcel = appexcel.Workbooks.Open("C:\InputDeviceSystem1.xlsx" )  
4.
5. derlig = source.Sheets(1).[A65536].End(xlUp).Row  
6. source.Sheets(1).range("A1:J" & derlig).Copy  
7. Selection.Paste

n°2240859
Marc L
Posté le 21-10-2014 à 14:29:52  profilanswer
 

 
           Utiliser une icône est si difficile ?!
 
           Sinon à quoi peut bien servir la variable définie en ligne n°3 si elle n'est pas utilisée par ailleurs ?!
           Chercher l'intru lignes n°5 & 6 !
 
           C'est juste de la pure logique indépendante de connaissances liées à un quelconque langage.
           Cela sent du copier / coller sans griller de neurone …
 
           Je voudrais bien voir alors le code fonctionnant sous Excel.
 

n°2240861
imfr
Posté le 21-10-2014 à 14:41:08  profilanswer
 

Il est clair que je m'appui sur bon nombre de forum pour obtenir le résultat que je veux car comme indiqué mes connaissances sont limités, mais ça a au moins le mérite d'essayer.
Pour info, ce que je demande est une petite partie du code (qui pour le reste fonctionne, mais peut être pas écris dans les règles de l'art) où il y a eu de nombreuses heures passées et de nombreux neurones de griller !
Il aurai peut être était pus simple de me die où se situe l'icone.

n°2240862
imfr
Posté le 21-10-2014 à 14:41:55  profilanswer
 

Il est clair que je m'appui sur bon nombre de forum pour obtenir le résultat que je veux car comme indiqué mes connaissances sont limités, mais ça a au moins le mérite d'essayer.
Pour info, ce que je demande est une petite partie du code (qui pour le reste fonctionne, mais peut être pas écris dans les règles de l'art) où il y a eu de nombreuses heures passées et de nombreux neurones de griller !
Il aurai peut être était pus simple de me die où se situe l'icone.

mood
Publicité
Posté le 21-10-2014 à 14:41:55  profilanswer
 

n°2240923
Marc L
Posté le 22-10-2014 à 10:14:55  profilanswer
 

 
            La solution est pourtant là :

Marc L a écrit :

Sinon à quoi peut bien servir la variable définie en ligne n°3 si elle n'est pas utilisée par ailleurs ?!
Chercher l'intru lignes n°5 & 6 !

            Il s'agit de respecter enfin la hiérarchie objet : Application / Objet / méthode ou propriété …
 

Marc L a écrit :

commencer par vérifier la logique et les variables utilisées …

            Suivre le code en mode pas à pas via la touche F8 puis vérifier dans la fenêtre des Variables locales le contenu des variables …
 
            Sinon :

Marc L a écrit :

Je voudrais bien voir alors le code fonctionnant sous Excel.

            Donc à partir d'un code fonctionnel sous Excel, ce sera facile de le passer sous Word …
 

n°2240934
imfr
Posté le 22-10-2014 à 12:09:34  profilanswer
 

Bonjour,
Après plusieurs heures passées et malgré que la solution soit peut être évidente, je n'arrive toujours pas écrire la hiérarchie objet (application, workbook, worksheet, ...) pour que cela fonctionne.
 
Je m'inspire du code qui fonctionne actuellement avec un tableau "figé", mais toujours sans succès. Ci dessous le code mais malheureusement toujours pas balisé. Pouvez vous me donner l'icone pour le faire et me donner une piste ?
 
Set appexcel = CreateObject("Excel.Application" )  
appexcel.Visible = True  
Set wbExcel = appexcel.Workbooks.Open("C:\InputDeviceSystem1.xlsx" )  
 
objExcel.Sheets("Feuil1" ).range("A1:J50" ).Activate
Set objTri = objExcel.Sheets("Feuil1" ).range("A1:J50" )
objTri.range("A1:J50" ).Copy

n°2240946
Marc L
Posté le 22-10-2014 à 14:28:58  profilanswer
 

 
            C'est l'icône dont l'infobulle indique : « Insérer du code … » !
 
            Activate ne sert à rien, mais là c'est encore un code (incomplet) sous Word …
 

n°2240951
imfr
Posté le 22-10-2014 à 14:48:14  profilanswer
 

Je ne vois pas d'icone avec info bulle "insérer du code" désolé.
Ce que je ne vous avez pas copié est la ligne ci dessous.
 
Dim objExcel, objFichier, objTri
 
Avec cette ligne cela fonctionne, j'ai besoin de la même chose mais avec un tableau "non figé".

n°2240980
Marc L
Posté le 22-10-2014 à 16:18:25  profilanswer
 

 
            Si le tableau est un bloc contigu de A1 à Jx, la colonne K étant vide, remplacer le Range initial par Range("A1" ).CurrentRegion
 

n°2240982
imfr
Posté le 22-10-2014 à 16:43:09  profilanswer
 

MERCI car maintenant ça fonctionne. Pour aller un peu plus loin dans le détail, cette macro dans sa version global permet de rechercher des mots dans un fichier Word et de les remplacer par des photos ou des tableaux, que je redimensionne. J'insert des lignes en couleurs, des textes en gras ...
Je peux vous assurer qu'il y a eu un paquet de neurones grillés dans ce programme.
Encore merci !
Par contre, je ne vois toujours l'icone pour baliser le code.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sélectionner une plage jusqu'à la dernière ligne

 

Sujets relatifs
[Excel 2007] Problème pour trouver le nombre de ligne d'une feuilleRemplir un agenda google via un google form pour prise de rdv en ligne
C++ : Ajouter une ligne à un fichier txtAfficher la ligne d'une table après avoir choisi son ID dans une liste
Batch ou autre pour enlever les virgules en fin de ligne (résolu)Créer un logiciel JAVA/FLASH + mise en ligne ?
Comment sélectionner des onglets à partir d'une variableconstruire un hash pour chaque ligne
VBA excel Suppression ligne sous condition 
Plus de sujets relatifs à : Sélectionner une plage jusqu'à la dernière ligne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR