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
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