Copie de cellules

  • Initiateur de la discussion NicoJD
  • Date de début
N

NicoJD

Guest
Salut a tous,

Voila je suis en stage depuis deux semaines et j'ai pour objectif de créer un logiciel qui permette tout d'abord de récupérer un fichier nommé Etal.....xls (.... correspond à des chiffres) puis de selectionner une plage de cellule que je devrais copier dans une autre feuille nommée synthèse.xls.

Pour le moment j'ai juste réussi à créer un userform permettant de sélectionner le fichier choisi. Jusque la tout va bien mais ensuite lorsque je lui demande de copier les cellules dans ma nouvelle feuille il me répond que l'indice n'appartient pas à la sélection...

Voici une partie de mon programme :

If lstFiles.Text = "" Then
MsgBox ("Veuillez sélectionner le fichier à ouvrir !!")
Else
Open lstFiles.Text For Random Access Read As #1
Workbooks("Me_New.xls").Sheets("Feuil1").Range("B7").Value = _
Workbooks(lstFiles.Text).Sheets("Résultats temp (1)").Range("B7").Value
Close #1

"lstFiles.Text" correspond au fichier sélectionné dans le userform (Etal.....xls)

Dans cet exemple, j'ai remplacer la plage de cellules range("B7:B16") par une cellule unique range("B7") mais je n'y arrive pas plus de cette manière..

Dans un second temps, je comptais utiliser la fonction Do while Not Isempty pour que la plage qui se trouve dans ma feuille de synthèse se décale d'une colonne à chaque fois qu'un nouveau fichier Etal....xls est analyser.
A ce propos si la variable est i, on peut faire une boucle commencant par i = B ?

J'éspère que vous arriverez à comprendre mon problème et vous remercie par avance de la réponse que vous pourriez me fournir...

Un jeune utilisateur (moins de 8h de formation à Visual Basic) qui a vraiment besoin de vous... Merci
 
Z

Zon

Guest
Salut,

Open lstFiles.Text For Random Access Read As #1 est plutôt destiné pour les fichiers texte.

Au lieu d'utiliser une boucle pour déterminer ta plage de celules, tu peux utiliser usedrange voir [B7].ccurentregion

dim Leclasseur as workbook
dim T
set leclasseur=Workbooks(lstFiles.Text).open devrait être mieux
T=Leclasseur.Sheets("Résultats temp (1)").usedrange

leclasseur.close 0
Sheets("Feuil1").Range("B7").resize(ubound(t,1),ubound(t,2))=T




A+++
 

Discussions similaires

Réponses
24
Affichages
1 K

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 016
dernier inscrit
Mokson