VBA code report de données

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. 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
  2. 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. Modérateur
      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
  3. Modérateur
    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
    1. 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. Modérateur

        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
    2. 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. Modérateur
        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