Utiliser le nom de l'onglet pour faire un champ.

J

Jetlager

Guest
Bonjour tout le monde

Voilà .... j'ai déjà reçu pas mal d'infos pour construire ma procédure dans VB par access pour importer ds données en provenance d'excell.

Et comme on peut toujours améliorer les performances je me suis dit qu'une importation des différents onglets de mon fichier excell dans une table unique d'access serait la meilleure solution.

Mon fichier xls est composé de plusieurs onglets
Ces onglets expriment chacun une catégorie pour leurs enregistrements.

1- Ce que j'aimerais c'est qu'une macro m'ajoute une colonne dans chaque onglet de mon fichier excell
2- Que cette colonne soit baptisé 'CATEGORIE'
3- Que chaque cellule dans la colonne soit renseignée avec le nom de l'onglet auquel ilappartient.


Comme ça quand j'importerai mon xls dans mdb je n'aurai plus qu'à appeler ma catégorie.

Je suis à peu près sur que l'un d'entre vous (dont ceux qui m'ont déjà aidé) vont faire encore preuve de génie.
J'appelle ça du génie parce que je trouve ça magique.

Au lieu d'apprendre l'anglais j'aurais dû faire du VB :S

Bonne semaine à tous
 

myDearFriend!

XLDnaute Barbatruc
Bonjour Jetlager, le Forum,

Si j'ai bien compris la question, ci-dessous, une façon de faire :
Sub AjoutCategorie()
Dim F As Worksheet
Dim Plage As Range
Dim L As Long, C As Integer
      For Each F In Worksheets
            With F
                  Set Plage = .UsedRange
                  C = Plage.Column + Plage.Columns.Count
                  L = Plage.Row + Plage.Rows.Count - 1
                  .Cells(Plage.Row, C).Value = 'CATEGORIE'
                  .Range(.Cells(Plage.Row + 1, C), .Cells(L, C)).Value = .Name
            End With
      Next F
End Sub
Cordialement,
 
J

Jetlager

Guest
Super : ça marche ....... dans une macro excell

Seulement je suis un gros nul et je me bats depuis ce matin pour ajuster les paramètres dans le module VB de access.

En fait j'ai un début de procédure qui déclare ces variables et je ne sais pas adapter ton code à mon début de procédure (forcément c'est quelqu'un d'autre qui m'a fortement aidé à le créer)
mais chut ..... ne le répétez pas !!!!


Je donne donc le début de procédure pour voir si c'est suffisant, sinon je peux donner le code entier mais je ne pense pas que cela soit nécessaire.


Private Sub TRAITEMENT_FICHIER_SOURCE_Click()
Dim MonFichier As String, i As Integer
Dim xlApp As Object
Dim MonWk As Object
Dim MaFeuil As Object
Dim Plage(50) As String, nbf As Integer


'supprime les enregistrements déjà présents de la table SCORPENE>>>>>>>>>>>>>>>>>>>>>>>>>>>
CodeDb.Execute 'delete * from SCORPENE'

MonFichier = OuvrirUnFichier(hWndAccessApp, 'Ouvrir', 1, 'Microsoft Excel', 'xls', CurrentProject.Path)
'ouvre le fichier
If MonFichier = '' Then Exit Sub
'sortie si pas de sélection de fichier

'création de l'objet Excel>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Set MonExcel = CreateObject('excel.application')
MonExcel.Visible = False
'force à invisible

'ouvre le fichier>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Set MonWk = MonExcel.Workbooks.Open(MonFichier)
nbf = MonWk.Sheets.Count
'sauve le nombre de feuilles présentes
For i = 1 To Worksheets.Count
Worksheets(i).Activate

' suppression des filtres>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Selection.AutoFilter

' libération des volets>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ActiveWindow.FreezePanes = False

suppression des 3 premières lignes>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Rows('1:3').Select
Selection.Delete Shift:=xlUp

' 'insertion du champ catégorie dans chaque onglet

Dim F As Worksheet
Dim Plage As Range
Dim L As Long, C As Integer
For Each F In Worksheets
With F
Set Plage = .UsedRange
C = Plage.Column + Plage.Columns.Count
L = Plage.Row + Plage.Rows.Count - 1
.Cells(Plage.Row, C).Value = 'CATEGORIE'
.Range(.Cells(Plage.Row + 1, C), .Cells(L, C)).Value = .Name
End With
Next F


Voilà le problème, j'avoue que je ne suis pas pardonnable ou alors j'ai les yeux plus gros que le ventre, que sais-je

Nobody's perfect !!


Merci encore pour cette attention
 

myDearFriend!

XLDnaute Barbatruc
Re Jetlager,

Quand tu dis 'Comme ça quand j'importerai mon xls dans mdb je n'aurai plus qu'à appeler ma catégorie.', moi, j'en déduis que tu souhaites une macro Excel à faire tourner dans Excel...

Visiblement j'ai mal interprété, je ne peux donc t'aider. Peut-être qu'un autre passant par là aura la solution ou peut-être faudrait-il que tu t'adresses à un forum Access...

Cordialement,

PS: que ce soit dans Excel ou Access ou partout ailleurs, on ne dimensionne pas des variables (Dim) au beau milieu d'une procédure, on le fait toujours au début...
 
J

Jetlager

Guest
Effectivement, c'est une chose à laquelle je n'avais pas pensé, c'est en revérifiant ce matin que je me suis rendu à l'évidence.
Et donc j'aurai du poser ma question d'une autre manière

En introduisant en 1er mon code, et ensuite en demandant une insertion de l'instruction 'ajouter une colonne'.

Je m'excuse, mais je m'en suis apperçu trop tard.

Je te remercie quand même car tu m'as aidé, ne serait-ce qu'en me donnant une leçon.

Bonne soirée
 
J

Jetlager

Guest
Aucun problème

Des personnes comme toi c'était inespéré il y a encore 5 ans, les utilisateurs du net ne sont pas conscients des ressources d'un forum.
Je dis bien impensable il y a 5 ans.

Moi j'en suis vraiment conscient, aujourd'hui nos vies professionnelle et privée nous imposent des cadences d'enfer.
En outre le peu de repos qu'il nous reste nous oblige à faire un véritable choix dans les loisirs qui sont aujou'd'hui à notre disposition.

Si nous ne partageons pas nos spécifications, nous somme condamnés à rester en marge.

C'est pour ça que je n'hésite pas à faire mes demandes.

Moi je suis juriste de droit social, et crois moi je suis en permance sollicité sur ds forums dédiés.
J'avais aussi le choix pour me perfectionner en vb et access, ça m'aurait bien plu. Mais les domaines sont de plus en plus complexes et pour être un bon, mieux vaut ne pas trop éparpiller ses centres d'intérêts.

Voilà ce que j'en pense.

En tous cas ne t'inquiète pas, j'ai déjà rebondi et retransmis un post sous une autre forme, en avancant directement le début de ma procédure vb et en demandant l'insertion de 2 commandes.
Et je l'ai aussi placé sur le forum access.

Bonne nuit.
 

Discussions similaires