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

Importation de données

  • Initiateur de la discussion Initiateur de la discussion Calvus
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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é
 
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
 
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??
 
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
 
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 🙂
 
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... 🙂
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
33
Affichages
3 K
Réponses
3
Affichages
1 K
S
Réponses
13
Affichages
2 K
Stedemart
S
S
Réponses
1
Affichages
916
M
Réponses
3
Affichages
1 K
msauvegrain
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…