Programme VBA

Bonjour,

je désire copie les valeurs se trouvant dans les mèmes cellules des feuilles d'un classeur excel

j ai le programme qui copie ces valeurs dans une feuille appeler TABLEAU
le programme marche très bien

MAIS!!
lorsque je supprime les feuilles (sauf la feuille 'TABLEAU') et je ramène d'autre feuille

le programme copie sur les donnes et écrase celle existante

je veux le modifie pour coller les nouvelles donnes a chaque fois en bas de tableau ou a la première ligne de tableau

y a t-il un moyen??

voici le PROGRAME

ACUALISER
' Dim Wsh As Worksheet, FeuilRecap As Worksheet, k As Integer

Set FeuilRecap = Worksheets("TABLEAU") 'feuille ou coller
k = 2 'autant débuter le "collage" à la seconde ligne

'boucle sur toutes les feuilles du classeur
For Each Wsh In ThisWorkbook.Worksheets
'Si la feuille (en cours dans la boucle) n'est pas la feuille récap alors
If Not Wsh Is FeuilRecap Then
'copié-collé
Wsh.Range("i1:v1").Cut FeuilRecap.Rows(k)
'ligne suivante pour le collage
k = k + 1
End If
Next Wsh

End Sub

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. merci
    SA MARCHE
    mais il colle sur la dernière ligne! " il écrase la derniere ligne dejà rempli
    je veux au dessous! just au dessous des données, je veux perdre a chaque fois une ligne!
    1. Contributeur
      sorry, j'ai négligé le
      +1
      :
      k=FeuilRecap.Cells(Rows.Count, 1).End(xlUp).Row + 1 
    2. @yg_bemerci bcp
      sa marche
      bravo

      il me reste une macro pour supprimer les doublons et les ligne vides

      j ai fais une pour les doublons ! (je l'ai trouvé sur ce forum)
      mais pas pour les ligne vide!
      voici la macro
      ------------------
      Sub SupprimerDoublons4C()

      Dim monDico As Object
      Dim i As Integer

      Set monDico = CreateObject("Scripting.Dictionary")

      Application.ScreenUpdating = False

      i = 1
      Do While Cells(i, "A") <> ""
      If Not monDico.Exists(Cells(i, "A") & Cells(i, "B") & Cells(i, "C") & Cells(i, "D")) Then
      monDico(Cells(i, "A") & Cells(i, "B") & Cells(i, "C") & Cells(i, "D")) = ""
      i = i + 1
      Else
      Rows(i).EntireRow.Delete
      End If
      Loop

      End Sub
      ------------------------------
    3. Contributeur
      C'est amusant, parce que la macro de suppression des doublons va s’arrêter à la première ligne vide.
    4. @yg_bebonjour
      bonne année

      la macro 'Actualiser' marche tres bien
      copie 'sans' prblm
      mais a chaque fois un message me dit " erreur d'execution '104' impossible de modifie les cellules fusionnée

      comment faire pour faire disparaitre ce mesage??
      je ne veux pas qu'il s'affiche, !!
      y a t-il un moyen?
      merci bcp
  2. elle ne fait rien!!!
    1. Contributeur
      peut-être que les lignes sont copiées beaucoup plus bas?
    2. Contributeur
      Mieux ainsi?
      k=FeuilRecap.Cells(Rows.Count, 1).End(xlUp).Row
  3. j'ai fais ça! mais sa marche pas.

    ACUALISER
    ' Dim Wsh As Worksheet, FeuilRecap As Worksheet, k As Integer

    Set FeuilRecap = Worksheets("TABLEAU") 'feuille ou coller

    k=wsh.UsedRange.Rows(wsh.UsedRange.Rows.Count).Row+1
    'boucle sur toutes les feuilles du classeur
    For Each Wsh In ThisWorkbook.Worksheets
    'Si la feuille (en cours dans la boucle) n'est pas la feuille récap alors
    If Not Wsh Is FeuilRecap Then
    'copié-collé
    Wsh.Range("i1:v1").Cut FeuilRecap.Rows(k)
    'ligne suivante pour le collage
    k = k + 1
    End If
    Next Wsh

    End Sub

    sa bloque....
    1. Contributeur
      c'est plutôt
      k=FeuilRecap.UsedRange.Rows(FeuilRecap.UsedRange.Rows.Count).Row+1
  4. bonjour
    k=wsh.UsedRange.Rows(wsh.UsedRange.Rows.Count).Row+1

    il faut laisser le programme tel quel est rajouter cette ligne?
    la mettre a la place de k=k+1?
    comment?

    merci
    1. Contributeur
      à la place de
      k=2
  5. oui , k=2 pour commencer le tableau

    mais comment faire pour commencer chaque fois a la dernière ligne de tableau ! ou il va faire décaler les cellules vers le bas de tel manière a ne pas les écraser ; et mettre les nvelle donnes a la place!
    1. Contributeur
      Ceci devrait copier après la dernière ligne utilisée:
      k=wsh.UsedRange.Rows(wsh.UsedRange.Rows.Count).Row+1
  6. Contributeur
    en bas de tableau ou a la première ligne de tableau?
    c'est toi qui a écrit:
    k = 2 'autant débuter le "collage" à la seconde ligne
    ?