Résolu Import dans une base de données

chadesaintjean

Nouveau membre
Bonjour à tous,
Je suis nouveau sur ce site et je débute en vba

J'ai deux classeurs Excel : un formulaire et une base de donnée qui me permet d'archiver les formulaires.

Comment faire en sorte que mon exportation corresponde à une mise a jour de la base plutôt que de recopier l'ensemble du formulaire dans la base.

Voici mon code :

Sub ArchivageFormulaire()

Dim Chemin As String
Chemin = ActiveWorkbook.Path & ":" & "BASE DE DONNEES.xlsx"

Dim classeurSource As Workbook, classeurDestination As Workbook

'définir le classeur source
Set classeurSource = ActiveWorkbook

'définir le classeur destination
Set classeurDestination = Application.Workbooks.Open(Chemin)

C'est ici qu'il me faudrait un code qui me permet si une ligne existe déjà de ne pas la recopier dans la base de donnée, mais aussi si la ligne existe (mais avec quelques modifications) de pouvoir remplacer celle déjà présente dans la base de données

'copier les données de "Formulaire" du classeur source vers la "Base de données" du classeur destination
classeurSource.Sheets("Formulaire").Range("A3:FI" & classeurSource.Sheets("Formulaire").Range("A" & Cells.Rows.Count).End(xlUp).Row).Copy Destination:=classeurDestination.Sheets("Base de données").Range("A" & classeurDestination.Sheets("Base de données").Range("A" & Cells.Rows.Count).End(xlUp).Row + 1)

'fermer le classeur destination sans message
Application.DisplayAlerts = False
classeurDestination.Close SaveChanges:=True
Application.DisplayAlerts = True

End Sub


J'espère avoir été suffisamment clair.
Merci de bien vouloir m'aider la dessus
 

drul

Obscur pro du hardware
Staff
On pourrait comparer toutes cellules, mais ça prendrais un temps énorme pour un résultat finalement identique... Qu'est-ce qui te dérange dans le faite de tout recopier ?
 

chadesaintjean

Nouveau membre
Le hic, c'est que ce la me créerait rapidement un énorme fichier avec bcp de doublons
 

chadesaintjean

Nouveau membre
Sachant que le fichier sera amené à être importer régulièrement, je voudrais qu'il ne m'importe que ce qui a été modifié
 

chadesaintjean

Nouveau membre
Non surtout pas car le fichier source sert de base pour plusieurs formulaire. Le but étant de rassembler l'ensemble des formulaires dans la base
 

VaderFR

Grand Maître
Meilleure réponse
Bonsoir,

petite question, pourquoi ne pas extraire les données d'Excel (ou Calc) en CSV et les importer via une moulinette Perl ou PHP dans une vraie BDD au format SQL (MySQL/MariaDB ou PostGres) ?
auquel cas un diff sur le fichier ancien + nouveau ressortirait directement les différences, d'ailleurs.
voire même de faire de vrais formulaires en web qui iront directement mettre à jour la BDD ?

Ce serait plus propre, non ?
Excel (ou Calc) sont des tableurs et ne sont pas fait pour gérer des bases de données.

Et si besoin est, on peut aider.
 

drul

Obscur pro du hardware
Staff
Je ne peux que plussoyer les remarques de mon "grand frère" Sith ...
Toutefois n'étant pas particulièrement compétent dans le domaine, j'en resterai à Excel et au VBA.
Ce qu'il va donc falloir ici c'est de comparer cellelule à cellule chaque ligne pour voire si elle existe déjà ...
Vu le nombre de donner à traiter celà peut-être extrêment lent, il va donc falloir travailler "intelligement". quelle version de excel utilises tu ?
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 836
Membres
1 586 369
Dernier membre
Mouslah
Partager cette page
Haut