AIDE COPIER COLLER AUTOMATIQUE sur nouvelle feuille ( macro - VBA) sur excel
aminelyamani
Messages postés6Date d'inscriptiondimanche 15 octobre 2006StatutMembreDernière intervention22 février 2011
-
19 août 2009 à 15:50
aminelyamani
Messages postés6Date d'inscriptiondimanche 15 octobre 2006StatutMembreDernière intervention22 février 2011
-
20 août 2009 à 09:07
Bonjour tout le monde,
je bloque depuis longtemps sur ce probleme et j'espere que quelqu'un puisse m'aider; je m'explique
j'ai Deux feuilles une BASE DE DONNEE et l’autre HISTORIQUE
Dans la BASE DE DONNEE j’ai plusieurs lignes et 3 colonnes dont date ; référence; nombre
Chaque jour un nombre de donnée s’ajoute à cette base ça veut dire des lignes de plus qui s’insèrent dans le tableau
Dans l’HISTORIQUE j’ai un tableau du meme type que ce lui dans la feuille BASE DE DONNEE …… je veux copier les nouvelles lignes qui se sont ajoutées dans la feuille BASE DE DONNEE et les recoller a la fin du tableau qui se trouve dans la feuille HISTORIQUE.
Pour cela j’ai pensé à une solution :
J’ai crée une cellule dans la feuille HISTORIQUE qui me donne la date de la derniere ligne ajoutée
Ce que je veux faire c’est copier les lignes de la feuille BASE DE DONNEE dont la date est superieur à la cellule créée dans la feuille HISTORIQUE
est ce que c'est possible de mettre ce que j'ai ecrit en VBA - macro ?
Merci d'avance pour votre aide
A voir également:
Vba copier coller dans une autre feuille
Copier automatiquement une cellule excel dans une autre feuille (vba) - Meilleures réponses
Excel copie automatique cellule d'une feuille à l'autre vba - Meilleures réponses
Arnaud.f123
Messages postés23Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention13 novembre 2013 19 août 2009 à 17:59
Salut,
Feuilles :
"BDD" = ta base de données
"HISTO" = la base Historique
Pour chaque feuille :
colonne 1 = Date,
colonne 2 = REF,
colonne 3 = nombre
Ligne 1 = entête des colonnes
Si besoin j'ai le fichier excel.
Ce que ne fait pas la macro :
si tu fais 1 copie dans histo le jour j et que tu ajoutes (ce même jour j) une ligne dans BDD, la ligne ajoutée ne sera pas copiée
Il vaudrait mieux utiliser dans ce cas une clé primaire de type n° unique d'enregistrement (1 numéro par ligne) et faire la recopie via ce n°, ou alors ajouter l'heure, minute et secondes dans la date.
A+
Arnaud
Voici le code :
Option Explicit
Sub PasserEnHisto()
'on charge les coordonnées des cellules source
Static ScrY As Integer, ScrX As Integer
ScrX = 1
ScrY = 1
'on charge la pos Y de Histo libre
Static DestY As Integer
DestY = YLibreHisto
'on releve la date du dernier histo
Static DateDernierHisto As Date
DateDernierHisto = Sheets("HISTO").Cells(DestY - 1, 1).Value
'on copie toutes les dates sup à DateDernierHisto
Static ScrDate As Date
Do
ScrY = ScrY + 1
ScrDate = Sheets("BDD").Cells(ScrY, ScrX).Value 'on relève la date dans BDD
If ScrDate > DateDernierHisto And Not ScrDate = 0 Then
'la date est supérieure à l'histo, on peut copier
Static i As Integer
For i = 1 To 3
Sheets("HISTO").Cells(DestY, i) = Sheets("BDD").Cells(ScrY, ScrX + i - 1).Value
Next
'on passe à la ligne suivante dans histo
DestY = DestY + 1
End If
Loop Until ScrDate = 0
End Sub
Function YLibreHisto() As Integer
'renvoie le n° de ligne libre dans histo
'peut être amélioré en :
' - partant de la dernière position libre connue lors de la dernière execution de cette fonction
' - ou bien par recherche par dichotomie (17 itérations max)
Static y As Integer
y = 1 'on se place sur la ligne d'entete
Do
y = y + 1 'on avance d'une ligne
Loop Until Sheets("HISTO").Cells(y, 1).Value = "" 'on boucle tant que la cellule n'est pas vide
YLibreHisto = y 'on renvoie la valeur
End Function
aminelyamani
Messages postés6Date d'inscriptiondimanche 15 octobre 2006StatutMembreDernière intervention22 février 2011 20 août 2009 à 09:07
Merci beaucoup pour ton aide , en effet j'aurais besoin de ton fichier excel .... même si ma date est en format dd/mm/yyyy hh:mm:ss
je vais commencer par ce programme dans un premier temps et essayer de le modifer apres.
je vous laisse mon adresse mail aminebennanimeziane@hotmail.com
cordialement et merci encore