Plage nomée variable pour importer dans Access

Résolu/Fermé
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - Modifié par skk201 le 7/11/2013 à 11:56
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - 18 nov. 2013 à 11:24
Bonjour à tous !

Voilà mon problème :

Je dois faire des fichiers excel ".xls" d'une quinzaine de colonnes et d'une centaine de lignes chacun.

Ces fichiers excel devront ensuite être importé dans une Base de donnée Access.

Le problème c'est que ces fichiers n'auront pas tous le même nombre de ligne. Donc impossible de définir une plage nomée fixe, car cela importerait également les lignes vides dans la Base de donée.

Ce que j'aimerais c'est définir une page nomée de cette magnière : Plage nomée =$A$2:$U$X

X = le nombre de de ligne remplie + 1

J'ai essayé d'utilisé la formule "INDIRECT" mais ça n'a pas marcher. Je ne suis pas certain de l'avoir utilisée correctement.

J'aimerait que le fichier reste assez simple, et donc aimerait évité d'utiliser du VBA.

Est-ce que vous auriez une idée ?

Si vous voulez je peux vous mettre un lien vers le fichier excel "brouillon" pour que vous fassiez des tests.

Merci
A voir également:

2 réponses

PHILOU10120 Messages postés 6385 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 11 juin 2024 802
Modifié par PHILOU10120 le 13/11/2013 à 19:11
Bonjour

Voici une méthode pour copier de la feuille 1 cellule B5 jusqu'à la dernière cellule remplie à droite puis jusqu'à la cellule remplie vers le bas, à respecter il ne faut pas de cellule vide dans la première ligne et la première colonne les informations seront collées valeur sur la feuille synthèse en A1

Sub copiecollerplage()
'
' copiecollerplage Macro
'

'
Sheets("Feuil1").Select
Range("B5").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("synthèse").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
End Sub


C'est en forgeant que l'on devient forgeron. - C'est au pied du mur que l'on voit le maçon - on apprend toujours de ses erreurs
1
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
14 nov. 2013 à 10:37
Merci beaucoup, ça serait une solution mais j'ai finalement obter pour une solution légèrement différente. Qui est propre a mon classeur.

Je vous remerci tout les deux !
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
Modifié par skk201 le 14/11/2013 à 13:27
Juste un question au sujet de ta macro.

Est-ce que pour ta macro, une cellule avec une fonction qui donne "" ou 0 est une cellule vide ?

Ou est-ce que tu saurais comment définir : la dernière ligne = la première ligne avec la valeur 0 dans colonne B à partire de B5 ?

Merci beaucoup

PS.- Et est-ce que ça copie également le format des cellules ? ou juste les valeurs ?

PS2.- Est-ce qu'il est possible de donner une collonne exacte pour la fin ?
0
PHILOU10120 Messages postés 6385 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 11 juin 2024 802
14 nov. 2013 à 22:02
Bonsoir

Si une cellule donne "" ou 0 cela correspond au résultat d'une formule donc la cellule n'est pas vide
la macro copie tout c'est au collage que l'on choisi tout, valeur ou formule ...
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
13 nov. 2013 à 18:48
Bonjour
tu peux exporter une feuille d'excel vers access ou importer depuis access une feuille d'excel a condition que la premiere ligne serve de nom de champ pour access.Une feuille devient une table dans access
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
14 nov. 2013 à 10:35
Oui mais on peut aussi définir une plage nomée qui est alors importé.

Le problème c'est que cette plage est fixe, et si des lignes sont vides elles sont également importés.
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
18 nov. 2013 à 11:24
Deplus quand je fait ça, ça m'importe 200 lignes alors qu'il n'y a qu'une 20taines de lignes remplies
0