VBA code report de données

Fermé
alf45 Messages postés 1 Date d'inscription mercredi 7 janvier 2015 Statut Membre Dernière intervention 7 janvier 2015 - 7 janv. 2015 à 13:11
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 7 janv. 2015 à 14:40
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

6 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 janv. 2015 à 13:30
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
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 janv. 2015 à 13:41
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
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 janv. 2015 à 13:50
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 janv. 2015 à 13:49
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
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 janv. 2015 à 14:40

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
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 janv. 2015 à 14:37
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