Copier des colonnes d'une feuille sur une autre feuille

bonsoir

Je ne connais rien en VBA ou modules, si votre attention est attiré par mon message voici ce que je voudrais faire en matricielle

J ai 4 feuilles dénommée « P- T-O et generale »

Je saisie indifféremment sur une de mes feuilles « P-T ou O » 7 colonnes, sachant que la saisie de ces colonnes mettent à jour 20 autres colonnes qui ont chacune une formule

Et je voudrais recopier a chaque saisie sur l’une ou l’autre des 3 feuilles (P.T. ou O) les 7 colonnes (A1:G1000) la derniére ligne saisie après la dernière ligne copiée sur la feuille "generale" (sachant que je saisie une ligne par jour)

(je ne peux pas tirer la formule vers le bas vers le bas sinon j'ai des "0" dans les cellulles B-C-D-E-F et cela gène par rapport aux formules qui sont dans les 20 colonnes suivantes ou alors trouver une solution qui disent si " " alors " mettre "X")

De la feuille saisie( P-T ou O) à la feuille générale

Exemple :

Feuille P

15-sept 2 1 11 9 13 P

17-sept 10 9 7 12 11 P

21-sept 7 10 11 13 12 P

Feuille T

13-sept 10 5 11 12 2 T

14-sept 6 13 3 12 10 T

16-sept 7 8 9 11 3 T

18-sept 2 4 9 13 14 T

19-sept 3 8 4 9 15 T

20-sept 6 7 8 10 12 T

22-sept 1 17 6 2 4 T

Feuille O

12-sept 3 11 5 2 1 O

Feuille generale

12-sept 3 11 5 2 1 O

13-sept 10 5 11 12 2 T

14-sept 6 13 3 12 10 T

15-sept 2 1 11 9 13 P

16-sept 7 8 9 11 3 T

17-sept 10 9 7 12 11 P

18-sept 2 4 9 13 14 T

19-sept 3 8 4 9 15 T

20-sept 6 7 8 10 12 T

21-sept 7 10 11 13 12 P

22-sept 1 17 6 2 4 T

(voir fichier pour explication

Par avance merci

Bonsoir,

voici une macro évènementielle à copier dans le code the thisworkbook. la macro s'activera dès qu'une cellule sera modifiée. si une date est trouvée en colonne A dans la ligne de la cellule modifiée, la copie sera effectuée

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "generale" Then Exit Sub
If Target.Column>7 Then Exit Sub
If Sh.Range("A" & Target.Row) = "" Then Exit Sub
Set ws = Sheets("generale")
Set r = ws.Range("a:a").Find(Sh.Range("A" & Target.Row))
If r Is Nothing Then
 ligne = ws.Range("a" & ws.Rows.Count).End(xlUp).Row + 1
Else
 ligne = r.Row
End If
Sh.Range("A" & Target.Row & ":G" & Target.Row).Copy ws.Range("a" & ligne)
Set ws = Nothing
Set r = Nothing
End Sub

bonsoir,

Je ne saurais trouver les mots pour vous remercier, je demande depuis plus d'une semaine, et personne ne semblait vouloir

répondre à ma demande

Mille fois merci cela marche super et ce n'est pas compliqué à installer

Cordialement

bonsoir,

lorsque j ai èssayè cela marchait mais une fois adapté à mes fichiers ca ne fonctionne plus

je me permets de vous joindre mon fichier pour voir ou est ce que j ai fais la bêtise

par avance merci

cordialement

http://cjoint.com/13sp/CIya2h9Hq4a.htm

bonjour,

Je viens de regarder mon fichier (qui semble ne pas vouloir faire la copie) et vous m'écrivez "voici une macro évènementielle à copier dans le code the thisworkbook" alors ce que j'ai fais, je l ai copié dans chaque feuille P.T. et O du code the thisworbook et la il semblerait, je dis bien il semblerait, que les lignes se copient

Est ce que c'était la solution ? ou est ce que j'aurais du vous parler des autre feuilles ?

Je suis navré de tout ce dérangement

Cordialement

Yves

Bonsoir,

effectivement la macro a été développée pour tenir compte des feuilles se trouvant dans le fichier donné comme exemple et devait être copié dans le code de thisworkbook. La présence des autres feuilles ne devrait pas poser de problèmes pour autant qu'il n'y ait pas de valeur dans la colonne "A".

La copie des colonnes A à G de la ligne ne se fait que si il y a une valeur introduite en colonne "A".

on peut également avoir un code évènementiel lié à certaines feuilles et donc à copier dans chacune des feuilles P O T

le code doit être légèrement adapté

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 7 Then Exit Sub
If Range("A" & Target.Row) = "" Then Exit Sub
Set ws = Sheets("generale")
Set r = ws.Range("a:a").Find(Range("A" & Target.Row))
If r Is Nothing Then
 ligne = ws.Range("a" & ws.Rows.Count).End(xlUp).Row + 1
Else
 ligne = r.Row
End If
Range("A" & Target.Row & ":G" & Target.Row).Copy ws.Range("a" & ligne)
Set ws = Nothing
Set r = Nothing
End Sub
Rechercher des sujets similaires à "copier colonnes feuille"