Copier juste la valeurs
Bonjour,
Je suis en train de créer une BDD pour ce faire j'ai créé un formulaire qui permet de l'alimenter. Un bouton "Mise à jour" permet d'envoyer tout dans la base de données. Cependant j'ai remarqué que toute la cellule était copier les listes déroulantes aussi .
J'aimerais savoir quelle solution serait la plus approprier pour effectuer cette action ?
Sachant que mon tableau et sur 9 lignes de 15 colonnes si je remplis tout mon formulaire et ensuite atterrir dans ma BDD toujours a la dernière ligne.
Voici mon code :
Workbooks("BDD").Activate
Worksheets("base de données").Activate
derniere_ligne1 = Sheets("base de données").Range("A2").End(xlDown).Row
derniere_ligne1 = derniere_ligne1 + 1
' MsgBox derniere_ligne1
Workbooks("formulaireBDD").Activate
Worksheets("formulaire").Activate
derniere_ligne2 = Sheets("formulaire").Range("A5").End(xlDown).Row
'Dim tab_2()
'ReDim tab_2(derniere_ligne2 - 4, 21)
x = derniere_ligne2 - 4
'For y = deniere_ligne2 + 1 To derniere_ligne2 + 4
Workbooks("formulaireBDD").Worksheets("formulaire").Range("A5:O" & derniere_ligne2).Copy Workbooks("BDD").Worksheets("base de données").Range("A" & derniere_ligne1 & ":O" & derniere_ligne1 + x)
Merci , d'avance
Cordialement.
Bonjour Lidizis,, bonjour le forum,
Peut-être comme ça :
Sub Macro1()
Dim CB As Workbook 'déclare la variable CB (Classeur Base)
Dim OB As Worksheet 'déclare la variable OB (Onglet Base)
Dim DLB As Integer 'déclare la variable DLB (Dernière Ligne de l'onglet Base)
Dim CF As Workbook 'déclare la variable CF (Classeur Formulaire)
Dim OF As Worksheet 'déclare la variable OF (Onglet Formulaire)
Dim DLF As Integer 'déclare la variable DLF (Dernière Ligne de l'onglet Formulaire)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Set CB = Workbooks("BDD") 'définit le classeur base CB
Set OB = CB.Worksheets("base de données") 'définit l'onglet base OB
DLB = OB.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'définit la premiere ligne vide DLB de la colonne A de l'onglet base
Set CF = Workbooks("formulaireBDD") 'définit le classeur formulaire CF
Set OF = CF.Worksheets("formulaire") 'définit l'onglet formulaire OF
DLF = OF.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DLF de la colonne A de l'onglet formulaire
TV = CF.Range("A5:O" & DLF) 'définit le tableau TV
BD.Cells(1, DLB).Resize(UBound(TV, 1), UBound(TV, 2)).Value = TV 'renvoie dans la cellule de la première ligne vide de la colonne A redimensionnée, le tableau TV
End Sub
Bonjour Ladizis, ThauThème,
essaye d'abord la solution de ThauThème ; je pense qu'elle devrait marcher ; sinon, pour répondre à ta question par MP, essaye ceci :
tu as cette longue instruction qui fait un copier / coller de tout, avec les formats de cellule et aussi ta liste déroulante :
Workbooks("formulaireBDD").Worksheets("formulaire").Range("A5:O" & derniere_ligne2).Copy Workbooks("BDD").Worksheets("base de données").Range("A" & derniere_ligne1 & ":O" & derniere_ligne1 + x)
fais-la en 2 instructions afin de faire un copier / coller valeurs :
Workbooks("formulaireBDD").Worksheets("formulaire").Range("A5:O" & derniere_ligne2).Copy
Workbooks("BDD").Worksheets("base de données").Range("A" & derniere_ligne1 & ":O" & derniere_ligne1 + x).PasteSpecial xlPasteValues
pour enlever le cadre de tirets défilants situé sur le contour de la zone copiée, ajoute :
Application.CutCopyMode = False
dhany
Bonjour,
A voir avec affectation des valeurs mais je n'ai pas testé :
Sub Test()
Dim FeBDD As Worksheet
Dim FeForm As Worksheet
Dim Lig As Long
Dim Lig2 As Long
Set FeBDD = Workbooks("BDD").Worksheets("base de données")
Set FeForm = Workbooks("formulaireBDD").Worksheets("formulaire")
With FeBDD: Lig = .Cells(.Rows.Count, 1).End(xlUp).Row + 1: End With
Lig2 = FeForm.Range("A5").End(xlDown).Row
FeBDD.Range("A" & Lig & ":O" & Lig + Lig2 - 4) = FeForm.Range("A5:O" & Lig2)
End Sub
Parfait, Merci beaucoup ça fonctionne nickel.
Cordialement Ladizis