Help / Copier juste la valeurs. Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
L
Ladizis
Jeune membre
Jeune membre
Messages : 17
Inscrit le : 4 février 2019
Version d'Excel : 2016 FR /WIN 10

Message par Ladizis » 5 février 2019, 14:26

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.

:bof: :bof: :bof:
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'734
Appréciations reçues : 161
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 5 février 2019, 16:10

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
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 7'074
Appréciations reçues : 698
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 6 février 2019, 02:24

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
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'020
Appréciations reçues : 305
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 6 février 2019, 06:52

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
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
L
Ladizis
Jeune membre
Jeune membre
Messages : 17
Inscrit le : 4 février 2019
Version d'Excel : 2016 FR /WIN 10

Message par Ladizis » 6 février 2019, 09:08

Parfait, Merci beaucoup ça fonctionne nickel.

:)

Cordialement Ladizis
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message