VBA code report de données

alf45 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour le Forum,

Je fais mes 1ers pas en VBA avec excel et j'ai besoin d'aide...

voici les explications :


Dans une feuille "SAISIE" je rentre des données

Avec un bouton nommé "COPIER les valeurs" je souhaite que :

- les données de "Saisie" soit reportées dans la feuille "Enregistrement" (ca j'ai réussi à faire)
- ces données soient enregistrées (ca j'ai réussi à faire)

Avec un bouton nommé "EFFACER les valeurs" je souhaite que :

- les données de la feuille "Saisie" soient effacées (j'ai réussi à faire)

Mon problème:

Je souhaite que lorsque je remplie une autre fois la feuille saisie
les données de "Saisie" s'enregistre au fur et à mesure dans la feuille "Enregistrement" en cliquant sur le bouton "COPIER les valeurs"

J'espère être clair...

Comment faire pour joindre le fichier ?

D'avance merci de votre aide
A voir également:

6 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Le plus simple.. serait que l'on parte de ton code actuel pour t'aider à le compléter.

NB : Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code



0
ALF45
 
Merci Jordane45
J'ai pas bien compris la synthaxique...

Voici mon code
Sub Bouton84_Cliquer()
Sheets("Saisie").Range("AB26").Copy Sheets("Enregistrement").Range("I3")
Sheets("Saisie").Range("AB27").Copy Sheets("Enregistrement").Range("H3")
Sheets("Saisie").Range("AB28").Copy Sheets("Enregistrement").Range("G3")
Sheets("Saisie").Range("AB29").Copy Sheets("Enregistrement").Range("F3")
Sheets("Saisie").Range("AB30").Copy Sheets("Enregistrement").Range("E3")
Sheets("Saisie").Range("AB31").Copy Sheets("Enregistrement").Range("D3")
Sheets("Saisie").Range("AB32").Copy Sheets("Enregistrement").Range("C3")
Sheets("Saisie").Range("AB33").Copy Sheets("Enregistrement").Range("B3")
Sheets("Saisie").Range("I29").Copy Sheets("Enregistrement").Range("J3")
Sheets("Saisie").Range("I30").Copy Sheets("Enregistrement").Range("K3")
Sheets("Saisie").Range("R29").Copy Sheets("Enregistrement").Range("L3")
Sheets("Saisie").Range("R30").Copy Sheets("Enregistrement").Range("M3")
Sheets("Saisie").Range("I31").Copy Sheets("Enregistrement").Range("N3")
Sheets("Saisie").Range("I32").Copy Sheets("Enregistrement").Range("O3")
Sheets("Saisie").Range("I33").Copy Sheets("Enregistrement").Range("P3")
Sheets("Saisie").Range("R31").Copy Sheets("Enregistrement").Range("Q3")
ActiveWorkbook.Save
End Sub


EDIT : ajout des balises de code ...(encore....)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu as lu le lien que je t'ai donné ??
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Il suffit de placer ton code entre les balises de code......(la première icone en haut à droite de la fenêtre où tu écris tes messages sur le forum)...
0
ALF45
 
je refais la manipulation

Voici le code

Sub Bouton84_Cliquer()
Sheets("Saisie").Range("AB26").Copy Sheets("Enregistrement").Range("I3")
Sheets("Saisie").Range("AB27").Copy Sheets("Enregistrement").Range("H3")
Sheets("Saisie").Range("AB28").Copy Sheets("Enregistrement").Range("G3")
Sheets("Saisie").Range("AB29").Copy Sheets("Enregistrement").Range("F3")
Sheets("Saisie").Range("AB30").Copy Sheets("Enregistrement").Range("E3")
Sheets("Saisie").Range("AB31").Copy Sheets("Enregistrement").Range("D3")
Sheets("Saisie").Range("AB32").Copy Sheets("Enregistrement").Range("C3")
Sheets("Saisie").Range("AB33").Copy Sheets("Enregistrement").Range("B3")
Sheets("Saisie").Range("I29").Copy Sheets("Enregistrement").Range("J3")
Sheets("Saisie").Range("I30").Copy Sheets("Enregistrement").Range("K3")
Sheets("Saisie").Range("R29").Copy Sheets("Enregistrement").Range("L3")
Sheets("Saisie").Range("R30").Copy Sheets("Enregistrement").Range("M3")
Sheets("Saisie").Range("I31").Copy Sheets("Enregistrement").Range("N3")
Sheets("Saisie").Range("I32").Copy Sheets("Enregistrement").Range("O3")
Sheets("Saisie").Range("I33").Copy Sheets("Enregistrement").Range("P3")
Sheets("Saisie").Range("R31").Copy Sheets("Enregistrement").Range("Q3")
ActiveWorkbook.Save
End Sub

                
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu as bien cliqué sur l'icône .. mais tu n'a pas placé ton code DEDANS....

vois tu la différence entre ton message ... et celui que j'ai édité pour toi ????
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Pour répondre à ta question...

...déjà...évite de faire des "copier/coller"... si tu ne veux récupérer que les valeurs.. tu peux utiliser la propriété .value des cellules....
Et pour "ajouter" des lignes à ta feuille.. il te faut déterminer la dernière ligne utilisée...

Ce qui donne un code comme ceci :
Sub Bouton84_Cliquer()
Dim LastR As Long
Dim ShSource As Worksheet
Dim ShCible As Worksheet

Set ShSource = Sheets("Saisie")
Set ShCible = Sheets("Enregistrement")

'recherche de la première ligne vide dans la feuille cible
LastR = ShCible.Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row + 1

ShCible.Range("I" & LastR).Value = ShSource.Range("AB26").Value
ShCible.Range("H" & LastR).Value = ShSource.Range("AB27").Value
ShCible.Range("G" & LastR).Value = ShSource.Range("AB28").Value
ShCible.Range("F" & LastR).Value = ShSource.Range("AB29").Value
ShCible.Range("F" & LastR).Value = ShSource.Range("AB29").Value
ShCible.Range("E" & LastR).Value = ShSource.Range("AB30").Value
ShCible.Range("D" & LastR).Value = ShSource.Range("AB31").Value
ShCible.Range("C" & LastR).Value = ShSource.Range("AB32").Value

'...etc...
'A toi de placer le reste de cellules à "copier" ..

ActiveWorkbook.Save
End Sub


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ALF45
 
Merci Jordane45,
Ca fonctionne pas mal mais...
quand j'efface ma saisie avec le bouton et que je refais une nouvelle saisie le report de données ne s'enregistre pas au fur et a mesure, il se fait toujours sur la même ligne de la feuille "enregistrement"
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

le report de données ne s'enregistre pas au fur et a mesure, il se fait toujours sur la même ligne

Et Sur QUELLE ligne ?

Essayes ce code et dis mois ce que ça donne
Sub Bouton84_Cliquer()
Dim LastR As Long
Dim ShSource As Worksheet
Dim ShCible As Worksheet

Set ShSource = Sheets("Saisie")
Set ShCible = Sheets("Enregistrement")

'recherche de la première ligne vide dans la feuille cible
LastR = ShCible.Cells.Find("*", Range("I1"), , , xlByRows, xlPrevious).Row + 1
Msgbox "Ligne = " & LastR 


ShCible.Range("I" & LastR).Value = ShSource.Range("AB26").Value
ShCible.Range("H" & LastR).Value = ShSource.Range("AB27").Value
ShCible.Range("G" & LastR).Value = ShSource.Range("AB28").Value
ShCible.Range("F" & LastR).Value = ShSource.Range("AB29").Value
ShCible.Range("F" & LastR).Value = ShSource.Range("AB29").Value
ShCible.Range("E" & LastR).Value = ShSource.Range("AB30").Value
ShCible.Range("D" & LastR).Value = ShSource.Range("AB31").Value
ShCible.Range("C" & LastR).Value = ShSource.Range("AB32").Value

'...etc...
'A toi de placer le reste de cellules à "copier" ..

ActiveWorkbook.Save
End Sub
0
Maurice
 
Bonjour

et en pro on fait comme ca

Sub Bouton84_Cliquer()
Application.ScreenUpdating = False
   With Sheets(Feuil2.Name)
      Range("AB26").Copy .Range("I3")
      Range("AB27").Copy .Range("H3")
      Range("AB28").Copy .Range("G3")
      Range("AB29").Copy .Range("F3")
      Range("AB30").Copy .Range("E3")
      Range("AB31").Copy .Range("D3")
      Range("AB32").Copy .Range("C3")
      Range("AB33").Copy .Range("B3")
      Range("I29").Copy .Range("J3")
      Range("I30").Copy .Range("K3")
      Range("R29").Copy .Range("L3")
      Range("R30").Copy .Range("M3")
      Range("I31").Copy .Range("N3")
      Range("I32").Copy .Range("O3")
      Range("I33").Copy .Range("P3")
      Range("R31").Copy .Range("Q3")
   End With
ActiveWorkbook.Save
End Sub


Feuil2.Name est le CodeName de l'onglet

A+
Maurice
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
et en pro on fait comme ca

Heu.... en ... "pro" .. on évite de faire du copier/coller..... Surtout pour ne récupérer "que" le contenu (sans la mise en forme).....
0