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

Importation de données

Calvus

XLDnaute Barbatruc
Bonjour,

J'importe des données à partir d'un classeur que j'ouvre, où je sélectionne les données à copier sous forme de tableau et que je viens coller dans ma feuille active.

J'ai adapté à partir d'un code qui m'a été fourni par CBernardT.

Ça fonctionne très bien, sauf si je veux importer le contenu d'un cellule unique. Il me manque un je ne sais quoi.

VB:
With Sheets(Onglet)
Tablo = .Range("B1:J15")
Tablo2 = .Range("C20:C53")
Tablo3 = .Range("G20:G53")
Tablo4 = .Range("B55:H63")
Tablo5 = .Range("C83:C116")
Tablo6 = .Range("G83:G116")
Tablo7 = .Range("B118:H126")
'Partie non fontionnelle
val1 = [J58].Value
val2 = [J121].Value
End With
ActiveWorkbook.Close False
' Classeur et Feuille dans lesquels il faut importer et coller les données
With ActiveSheet
.Range("B1").Resize(UBound(Tablo, 1), UBound(Tablo, 2)) = Tablo
.Range("C20").Resize(UBound(Tablo2, 1), UBound(Tablo2, 2)) = Tablo2
.Range("G20").Resize(UBound(Tablo3, 1), UBound(Tablo3, 2)) = Tablo3
.Range("B55").Resize(UBound(Tablo4, 1), UBound(Tablo4, 2)) = Tablo4
.Range("C83").Resize(UBound(Tablo5, 1), UBound(Tablo5, 2)) = Tablo5
.Range("G83").Resize(UBound(Tablo6, 1), UBound(Tablo6, 2)) = Tablo6
.Range("B118").Resize(UBound(Tablo7, 1), UBound(Tablo7, 2)) = Tablo7
.Range("B1").Select
'Partie non fontionnelle
.[J58].Value = val1
.[J121].Value = val2
End With

Merci de votre aide et bonne journée
 

néné06

XLDnaute Accro
Re : Importation de données

Bonjour Calvus,

As tu bien, au début du module, placé l'instruction "Option Base 1" ?
Avec "Option Base 1" le tableau stockera de Tab(1) à Tab(n)
Sans "Option Base 1" le tableau stockera de Tab(0) à Tab(n-1)

A+

René
 

Calvus

XLDnaute Barbatruc
Re : Importation de données

Bonjour Dugenou, Néné06,

Merci à vous deux.

Bonjour,
A tout hasard car je n'y connait pas grand chose :
val1 = .Range("J58").Value

[J58] est une autre façon d'écrire Range("J58"). Donc ce n'est pas ça

@ Néné06 : je t'informe que le code est dans une feuille. Je ne sais pas si ça change quelque chose.

Mais j'ai essayé de toute façon, j'ai mis Option Base 1 au début du code de la feuille et ça ne change rien. En faisant le pas à pas, arrivé à la val1 ou val2, le débogueur me dit que la cellule est vide, alors qu'il y a bien une valeur à l'intérieur...

Merci
 

Modeste

XLDnaute Barbatruc
Re : Importation de données

Bonjour vous trois ... et puis tous les autres,

Si J58 et J121 sont des cellules de la feuille "Onglet" (quel joli nom, pour une feuille ), je verrais bien un point devant [J58] et [J121].

Mais bon, des hypothèses on peut encore en faire beaucoup! Un p'tit bout d'fichier, c'est point posssssîîîîp??
 

Calvus

XLDnaute Barbatruc
Re : Importation de données

Bonjour Modeste,

tu as raison, Onglet c'est poétique

Le point devant fait planter la macro....

J'essaierai d'envoyer un fichier ce soir. Du boulot en perspective... déjà 52 871 482 lignes de code !!! (j’exagère un peu, mais c'est pour faire hommage aux marseillais présents sur le site, s'il y en a )

Merci.
A bientôt
 

Calvus

XLDnaute Barbatruc
Re : Importation de données

Bonjour Dugenou, René, Modeste, le forum,

Mais où va donc se loger le point !!!

C'est en écrivant le code de l'exemple que je m’apprêtais à envoyer ce matin que j'ai trouvé l'erreur.

Il fallait écrire val1 = .[J58].Value !!!

Ça fonctionne donc maintenant.

Quelqu'un peut il d'ailleurs me dire à quoi sert ce point ? Parfois il n'est pas utilisé dans l'instruction With... Ce n'est pas intuitif l'existence ou non ainsi que la position de ce point.

Bonne journée à vous
 

Calvus

XLDnaute Barbatruc
Re : Importation de données

Hello 0

Oui, ça je sais. Mais des fois il n'y est pas, je t'assure. Je l'ai vu plein de fois, ici même notamment.

Bon, c'est pas bien grave...
 

Si...

XLDnaute Barbatruc
Re : Importation de données

Salut

il y a des obligations obligatoires, un point, c'est tout !

je t'informe que le code est dans une feuille. Je ne sais pas si ça change quelque chose.

Cela dépend d’où vient le boulet du canon !

Pour un code écrit dans la page de code de la feuille, tu dois savoir si la cellule (la plage) concernée est dans la feuille ou pas.

Dans la feuille,
[A1] (suite à donner)
suffit !
Dans une autre feuille nommée (par hasard) "Onglet" il faudra passer par le point
Sheets("Onglet").[A1] (suite à donner)
Ou
With Sheets("Onglet")
.[A1] (suite à donner)
End with

pour les intervenants
 
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…