VBA code report de données

alf45 Messages postés 1 Statut Membre -  
jordane45 Messages postés 30426 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

6 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  2. 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
  3. 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
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
  4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       

      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
  7. 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
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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