Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tansfert de donnees entre classeurs

14 réponses
Avatar
magic-dd
bonsoir

je possede 2 classeurs, le cible et la source

mon classeur cible comporte le meme nombre d'onglets avec le meme nom de fe=
uille que le classeur source.

le but recherch=E9 est de mettre =E0 jour ma cible en fonction de ma source=
.

vous me direz qu'avec un copier coller c=E0 serait simple or je ne veux cop=
ier que ma derni=E8re ligne de ma source vers ma cible ( sur le meme onglet=
) seulement si la date de ma source est differente de ma cible.

exemple=20

classeur cible

donnees jusqu'en ligne 25

en A25 j'ai la date Aout 2012

sur mon source j'ai des donnees jusqu'en ligne 211

en A 212 j'ai la date Sept 2012

Dans ce cas, il va copier la ligne 212 et va la coller valeur en A26 de ma =
cible


si dans le cas ou les dates etaient identiques alors petit message genre "a=
ucune donnees =E0 inserer"

j'espere avoir =E9t=E9 assez explicite

merci par avance

4 réponses

1 2
Avatar
Jacky
Bonjour Denis

...mais l'entretien de ton fichier risque d'être plus facile et cette approche est plus flexible, le cas
échéant :


+1 adepte de ce procédé

Sans oublier de remplacer
Application.EnableEvents = False


Par
Application.EnableEvents = true


en fin de macro

--
Salutations
JJ


"MichD" a écrit dans le message de news: k3cb11$tc0$
Il serait sage de modifier la ligne de code suivante
If Rst.EOF = False Then

par celle-ci :

'Si au moins un enregistrement
If Rst.EOF = False And Rst.RecordCount >= 0 Then

IMPORTANT : Il est préférable d'avoir une ligne de données en dessous
de la ligne d'étiquette des feuilles du fichier de destination.
Sinon, la procédure risque de confondre le type de données
transféré et enregistrer les données au format texte.


Si tu utilises ce qui suit, la procédure prend quelques millisecondes de plus
à s'exécuter, mais l'entretien de ton fichier risque d'être plus facile et cette
approche est plus flexible, le cas échéant :

Quand tu ouvres le fichier de cette manière :
Set WkCible = GetObject(ThisWorkbook.Path & "Ado_Feuille_Destination.xlsm")

L'interface de la feuille de calcul est masquée et l'usager ne se rend pas
compte qu'un fichier s'ouvre...

'----------------------------------------------------
Sub test()
Dim WkSource As Workbook
Dim WkCible As Workbook
Dim Sh As Worksheet
Dim Nom As String, ValeurSource As Range
Dim ValeurCible As Range

Application.EnableEvents = False
Set WkSource = ThisWorkbook 'Où tu as copié la procédure
'En supposant que le classeur cible est source sont
'dans le même répertoire.
Set WkCible = GetObject(ThisWorkbook.Path & "Ado_Feuille_Destination.xlsm")

For Each Sh In WkSource.Worksheets
Nom = Sh.Name
Set ValeurSource = Sh.Range("A65536").End(xlUp)
With WkCible.Worksheets(Nom)
Set ValeurCible = .Range("A65536").End(xlUp)
If ValeurCible <> ValeurSource Then
ValeurSource.EntireRow.Copy ValeurCible.Offset(1)
Else
MsgBox "Pour la feuille source """ & Sh.Name & """ " & _
"il n'y a aucune ligne à copier."
End If
End With
Next
Workbooks(WkCible).Close True
Application.EnableEvents = False
End Sub
'----------------------------------------------------

MichD
---------------------------------------------------------------

Avatar
MichD
Enfin un message que je comprends, mais qui suscite une
réponse non évidente! ;-)

MichD
---------------------------------------------------------------
"Jacky" a écrit dans le message de groupe de discussion :
k3ch55$dk3$



--
Salutations
JJ
Avatar
Jacky
Pour un fois que j'ai faillis me taire
;o)))

--
Salutations
JJ


"MichD" a écrit dans le message de news: k3chok$fci$

Enfin un message que je comprends, mais qui suscite une
réponse non évidente! ;-)

MichD
---------------------------------------------------------------
"Jacky" a écrit dans le message de groupe de discussion : k3ch55$dk3$



--
Salutations
JJ


Avatar
MichD
| Sans oublier de remplacer
| > Application.EnableEvents = False
| Par
| > Application.EnableEvents = true
| en fin de macro

Tu as bien raison, vive le copier-coller!

| +1 adepte de ce procédé

Lorsque la situation s'y prête, le traitement avec ADO est très
rapide et avantageux si l'opération doit être répétée fréquemment.
Elle est cependant plus complexe à mettre en opération...

Un fichier Zip pour illustrer la chose : http://cjoint.com/?BItqaCNmQXE

A ) Dézipper et mettre les 2 fichiers dans le même répertoire
B ) Ouvrir le fichier Ado_Feuille_Destination.xlsm, les 2 macros y sont.
C ) Il ne reste plus qu'à cliquer sur les boutons!


MichD
---------------------------------------------------------------
1 2