Help!!! transfert de données par macro d'un fichier excel

Résolu
cs_perdida Messages postés 2 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 20 décembre 2005 - 20 déc. 2005 à 16:27
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 20 déc. 2005 à 23:26
Bonjour,
debutante que je suis, je galere enormement pour construire une macro qui effectuerait la manoeuvre suivante:

en fait, j'ai un fichier excel de type (a) qui doit me permettre d'alimenter un autre fichier excel de format (b)
quel code utiliser pour que le nom de mes onglets du doc b soit equivalent à ce qui est enregistré dans la colonne 1 de mon doc a.
comment faire pour trier les données , sachant que j'ai plusieurs criteres de selection (autrement , je risque de me retrouver avec des doublons)

j'espere que j'ai ete assez claire
je vous remercie d'avance.....

2 réponses

ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
20 déc. 2005 à 23:14
J'ai pas très bien compris si, lorsque tu parles d'onglets, tu parles des différentes feuilles du classeur Excel. Je suppose.
Donc, ça revient à donner à chaque feuille du doc B le nom contenu dans la colonne "A" du doc A.
Donc, pour répondre à ta question, rien de plus simple :

Public varFaireUneSeuleFois As Boolean

Private Sub Worksheet_Activate()
varFaireUneSeuleFois = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim varNomDeLaFeuille As String
Dim varTour As Integer

If varFaireUneSeuleFois = False Then
'Au cas où les noms soient invalident, on passe au suivant.
On Error Resume Next
For varTour = 1 To Worksheets.Count
Worksheets( 1 )
.Cells(1, 1).Formula = "= ' C:\Temp\[Classeur1.xls]Feuil1 '!$A$" & CStr(varTour)
varNomDeLaFeuille = Worksheets(1).Cells(1, 1).Value
Worksheets(varTour).Name = varNomDeLaFeuille
Next varTour
varFaireUneSeuleFois = True
'Efface la cellule temporaire
Worksheets( 1 )
.Cells(1, 1) = ""
End If
End Sub

Le truc c'est de toujours garder une cellule libre sur une feuille du document dont les feuilles sont à renommer afin d'y stocker temporairement une formule sencée nous donner le contenu de la colonne A du doc A (Classeur1.xls ici en l'occurence) sans que ce dernier n'ait besoin d'être ouvert .

Bon, y'a sans doute plus simple pour récupérer des datas dans un classeur fermé mais là, de tête, je m'en souvient plus alors... si quelqu'un d'autre a une idée!!!

Enjoy
<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
3
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
20 déc. 2005 à 23:26
Pour ta deuxième question, je te laisse te référer à l'aide de la méthode/fonction "Sort" de l'objet Range/Cells : Worksheets(1).Range("A1:C10").Sort arguments...

Sinon, sache qu'il n'y a pas 36 moyens : se débrouiller tout seul. Autrement dit, créer de toute pièce une routine de trie en s'aidant des tableaux (matrices) et des boucles DO/WHILE, ...

Mais en règle générale, la combinaison de plusieurs "Sort" fait l'affair dans la plupart des cas de figures.

Repost un message si tu as besoin de plus d'aide.

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
Rejoignez-nous