copie de données classeurs

binoute

XLDnaute Occasionnel
bonjour le forum,
sous vba, apres avoir saisie des données dans un userform et sauvegardé sur un feuille du classeur, je souhaite transféré une partie des données vers un autre classeur pour créer des listes automatiques.
si je maitrise à peu pres les fonctionnalités et la création des deux classeurs, je nage pour élaborer une passerelle entre les deux.
existe t'il un exemple facile à suivre ?
merci d'avance

Message édité par: binoute, à: 25/03/2005 17:49
 

binoute

XLDnaute Occasionnel
Bonjour le forum et bon WE de paques,
je me permet de me répondre, pour faire remonter mon post en tete.
ma question initiale est elle bete, ou bien la solution n'existe pas ?
dans l'attente d'un soutien sur cette interrogation,
merci d'avance
 

MichelXld

XLDnaute Barbatruc
bonjour Binoute , bonjour Pierre

Binoute , j'etais justement en train de finaliser un classeur pour ta question , et ta relance est un peu décourageante : ce n'est pas parce que la question date d'hier quelle est tombée dans les oubliettes : pas sur le forum XLD en tous les cas ...il faut savoir etre patient !

je te conseil un peu de lecture pour commencer le week end

https://www.excel-downloads.com/help/charte/



bon week end
MichelXld [file name=TransfertDonnees.zip size=17527]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TransfertDonnees.zip[/file]
 

Pièces jointes

  • TransfertDonnees.zip
    6.7 KB · Affichages: 29
  • TransfertDonnees.zip
    6.7 KB · Affichages: 27
  • TransfertDonnees.zip
    6.7 KB · Affichages: 27

binoute

XLDnaute Occasionnel
Bonjour pierre et michel,
pierre, ouf tu ne t'appelles pas 'robert', pour remplir l'objet de ta photo !
michel, en effet mon impatience peut paraitre insupportable aux vieux routards qui font vivre ce forum, mais souviens toi des nuits blanches que tu as surement passé lors de tes débuts.
Quand ça vient pas, ça vient pas, alors ne croit pas que je mette en doute le suivi des post par ma 'relance'.
je souhaitais juste joindre l'utile à l'agréable en faisant un petit coucou à ceux qui sont devant leurs claviers en ce WE de paques.

pour ce qui est de ton exemple, il correspond exactement à mon besoin et je t'en remercie.

je vais de suite marier ce code à mon application et te tiens au courant si necessité d'eclaircissement

Bon week end à tous
 

binoute

XLDnaute Occasionnel
rebonjour michel, les autres,

j'ai donc marier le code que michel avait gentiment concocté avec mon application, mais j'avais oublier de spécifier un point de détail :
dans mon classeur 'listing BL', je gere 1 feuille par mois.
Sachant que la textbox52 contient la date jj/mm/aaaa, peut on tester facilement pour faire la préselection de la feuille concernée ?
Je joins un partiel du code que j'utilise,
d'avance merci

If ComboBox1.Value = 'Liste BL' Then
'verifie que tous les champs sont renseignés
If ComboBox1 = '' Or TextBox51 = '' Or TextBox52 = '' Or TextBox53 = '' Or TextBox54 = '' Then
MsgBox 'Tous les champs de la liste sélectionnée doivent etre renseignés'
Exit Sub
End If

'recupere la premiere ligne vide dans la feuil TEMP
i = ThisWorkbook.Sheets('TEMP').Range('A65536').End(xlUp).Row + 1

With ThisWorkbook.Sheets('TEMP') 'transfert les donnees dans la feuil TEMP
.Range('A' & i) = TextBox51.Value
.Range('B' & i) = TextBox52.Value
.Range('C' & i) = TextBox53.Value
.Range('D' & i) = TextBox54.Value
End With

Application.ScreenUpdating = False 'masquer l'ouverture du classeur 'ListeAutomatique'

'ouverture du classeur Listing BL.xls ( qui doit etre dans le meme repertoire )
Set Wb = Workbooks.Open(ThisWorkbook.Path & '\\Listing BL.xls')

j = Wb.Sheets('JANVIER').Range('A65536').End(xlUp).Row + 1

With Wb.Sheets('JANVIER') 'transfert les donnees dans la feuille
.Range('A' & j) = TextBox51.Value
.Range('B' & j) = TextBox52.Value
.Range('C' & j) = TextBox53.Value
.Range('D' & j) = TextBox54.Value
End With

'ferme le classeur en enregistrant les modifications
Wb.Close True
 

MichelXld

XLDnaute Barbatruc
rebonjour Binoute

si les feuilles du classeur 'Listing BL.xls' sont ordonnancées de façon logique ( Janvier= feuille 1 , Fevrier = Feuille 2 ...etc...) , tu peux facilement adapter la procedure
la fonction Month renvoie le numero du mois

....
j = Wb.Sheets(Month(TextBox52)).Range('A65536').End(xlUp).Row + 1

With Wb.Sheets(Month(TextBox52)) 'transfert les donnees dans la feuille
.Range('A' & j) = TextBox51.Value
.Range('B' & j) = TextBox52.Value
.Range('C' & j) = TextBox53.Value
.Range('D' & j) = TextBox54.Value
End With
....



remarque :
si tu souhaites préalablement vérifier que le TextBox52 est bien au format date tu peux utiliser la fonction IsDate

...
If IsDate(TextBox52) Then
...



bon apres midi
MichelXld
 

binoute

XLDnaute Occasionnel
Michel,
merci pour ton aide, ton code fonctionne à merveille.

mais il m'est arrivé une bete chose pour ce genre de liste.
je m'explique : si par un malencontreux hasard, je fais une double validation, je me retrouve avec 2 lignes identiques dans mon classeur liste. Sait on comparer une valeur à toutes les lignes d'une feuille ?
ceci afin de faire monter un message box si on trouve le meme numero de bl par exemple. :eek:

Sinon rien à voir avec le sujet, mais toi qui à l'air de frequenter le forum assidument, je n'ai ni acces à l'apercu ni au smileys ni au balises, est ce normal ?

bonne apres midi et a+
 

MichelXld

XLDnaute Barbatruc
bonsoir Binoute

pour éviter la double validation , le plus simple est de réinitialiser les TextBox en fin de macro ( comme tu pourras le voir dans le classeur que je t'ai proposé ce matin )

TextBox51 = ''
TextBox52 = ''
TextBox53 = ''
TextBox54 = ''


pour ta dernière question : non ce n'est pas normal que tu n'es pas acces à l'apercu ,aux smileys et aux balises
c'est peut etre lié au type ou à la version de ton navigateur internet
il faudrait que tu en parles à David , le WebMaster d'XLD


bonne soirée
MichelXld
 

binoute

XLDnaute Occasionnel
bonjour Michel,le forum,
un petit probleme sur le code que tu m'as passée.
quand on saisit une date sur l'userform, 05/12/05 par exemple,
on récupere sur la liste 12/05/2005. j'ai beau changer le format cellule
pour récuperer le truc mais je tourne en rond.

si tu connais le bug ! je suis preneur pour la solution

@+ et bon dimanche
 

Robert

XLDnaute Barbatruc
Repose en paix
binoute écrit:
Bonjour pierre et michel,
pierre, ouf tu ne t'appelles pas 'robert', pour remplir l'objet de ta photo !
C'est quoi ce gag !!!! Je tiens à créer sur le champ (de navets) et illico le Comité de Soutien aux Robert. Il est inacceptable qu'un prénom aussi gracieux qu'original soit sujet à des plaisanteries si déplacées...Loule !
 

binoute

XLDnaute Occasionnel
Bonjour Michel, Robert et le forum,
Non Robert ne vois pas dans cet échange une quelconque esquisse de persécution des 'Robert', que nous les hommes, aimons tous tu le sais bien :)

Sinon pour michel, je comprend bien le post que tu as joint en lien que le format date peut etre adapter à n'importe quelle sauce, mais ou je suis plus perplexe c'est quand on est obligé de tous mettre dans le désordre pour arriver au resultat désiré :
Mon code pour arriver à afficher correctement ma date :

'recupere la premiere ligne vide dans la feuil TEMP
i = ThisWorkbook.Sheets('TEMP').Range('A65536').End(xlUp).Row + 1

With ThisWorkbook.Sheets('TEMP') 'transfert les donnees dans la feuil TEMP
.Range('A' & i) = TextBox47.Value
.Range('B' & i) = Format(TextBox48, 'MM/DD/YYYY')
.Range('C' & i) = TextBox49.Value
.Range('D' & i) = TextBox50.Value
End With

Application.ScreenUpdating = False 'masquer l'ouverture du classeur 'ListeAutomatique'

'ouverture du classeur ListeAutomatique.xls ( qui doit etre dans le meme repertoire )
Set Wb = Workbooks.Open(ThisWorkbook.Path & '\\Listing ARC.xls')

If IsDate(TextBox48) Then
j = Wb.Sheets(Month(TextBox48)).Range('A65536').End(xlUp).Row + 1

With Wb.Sheets(Month(TextBox48)) 'transfert les donnees dans la feuille
.Range('C' & j) = TextBox47.Value
.Range('A' & j) = Format(TextBox48, 'MM/DD/YYYY')
.Range('D' & j) = TextBox49.Value
.Range('E' & j) = TextBox50.Value
End With
End If

Ceci pour arriver à ecrire dans cellule A: jour/mois/année !

Bizarre bizarre, @+ et bon lundi de paques à tous
 

Discussions similaires

Réponses
10
Affichages
905

Statistiques des forums

Discussions
314 011
Messages
2 104 528
Membres
109 061
dernier inscrit
nedjima