Copié/collé avec variable
Résolu
Berloutte
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Berloutte Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Berloutte Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Après cet après midi de tentatives et de recherches, je me résigne à poster sur le forum.
Je vous explique mon problème :
Sur un premier onglet, il y a un tableau avec un nombre variable de ligne selon les semaines.
Sur la première colonne, il y a un nombre qui identifie la ligne (qui est, dans mon contexte, un document).
J'ai envie de créer une macro qui me permet de copier/coller ces lignes sur un autre onglet suivant le numéro de la ligne.
J'ai essayé pas mal de choses, dont ce dernier essai :
Lorsque je lance ma maccro, rien ne se passe.
Je vous remercie beaucoup pour toute aide !
Après cet après midi de tentatives et de recherches, je me résigne à poster sur le forum.
Je vous explique mon problème :
Sur un premier onglet, il y a un tableau avec un nombre variable de ligne selon les semaines.
Sur la première colonne, il y a un nombre qui identifie la ligne (qui est, dans mon contexte, un document).
J'ai envie de créer une macro qui me permet de copier/coller ces lignes sur un autre onglet suivant le numéro de la ligne.
J'ai essayé pas mal de choses, dont ce dernier essai :
Sub diffusion() Dim num As Long Dim h As Integer Dim i As Long num = 13 'mon tableau commence à la ligne 13 While Not IsEmpty(Cells(num, 1)) 'tant que la case n'est pas vide je fais le copié collé h = Sheets("Diffusion").Cells(num, 1).Value 'h sera la valeur du numéro du document Range(Cells(num, 1), Cells(num, 8)).Copy Destination:=Sheets("Suivi de Diffusion").Range(Cells(h, 1)).Offset(14, 0) 'la ligne de mon premier onglet à copier va de la colonne A à H, d'où le Range(Cells(num, 1), Cells(num, 8)) 'à la ligne 30 de mon deuxième onglet il y a le doc 16 par exemple, d'où le offset(14, 0) num = num + 1 'j'incrémente pour ma boucle Wend End Sub
Lorsque je lance ma maccro, rien ne se passe.
Je vous remercie beaucoup pour toute aide !
A voir également:
- Copié/collé avec variable
- Copie cachée - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
- Copie rapide - Télécharger - Gestion de fichiers
4 réponses
Bonjour
hé oui, il faut alors une boucle ;o)
Michel
hé oui, il faut alors une boucle ;o)
Option Explicit
'--------
Sub diffuser()
Dim Derlig As Byte, Lig_d As Byte, Num As Byte, T_diff
Dim Lig_s As Byte
Application.ScreenUpdating = False
With Sheets("diffusion")
Derlig = .Columns("A").Find("", .Range("A12")).Row - 1
For Lig_d = 13 To Derlig
Num = .Cells(Lig_d, "A")
T_diff = .Range(.Cells(Lig_d, "B"), .Cells(Lig_d, "H")).Value
With Sheets("Suivi de diffusion")
Lig_s = .Columns("A").Find(Num, .Range("A12")).Row
.Range(.Cells(Lig_s, "B"), .Cells(Lig_s, "H")) = T_diff
.Rows(Lig_s).Rows.AutoFit ' voir si OK avec XL<2007
End With
Next
End With
Sheets("Suivi de diffusion").activate
End Sub
Michel
Bonjour
Sans boucle
Michel
Sans boucle
Option Explicit
'--------
Sub diffuser()
Dim Num As Byte, Derlig As Integer, T_copie
Application.ScreenUpdating = False
Num = 13
'mon tableau commence à la ligne 13
' range A12 ne doit pas être vide (un espace suffira)
Derlig = Columns("A").Find("", Range("A12"), xlValues).Row - 1
T_copie = Range(Cells(Num, 1), Cells(Derlig, 8))
With Sheets("Suivi de Diffusion").Range("A" & 30).Resize(UBound(T_copie), 8)
.Value = T_copie
.Activate
End With
End Sub
Michel
Bonjour Michel,
Je vous remercie beaucoup d'avoir pris le temps de me répondre.
Lorsque je lance le programme, VBA m'envoie un message d'erreur : "Le mode Activate de la classe Range a échoué".
De plus, je pense m'être mal exprimé :
Si je comprends bien votre procédure, elle copie mon tableau entier dans le deuxième onglet. Or, j'aimerai pouvoir "ranger" les lignes de mon tableau une par une...
C'est à dire que dans le premier onglet j'ai qqch du type :
21. Plan
24. Note de calcul
23. Fiche technique
et que dans le deuxième onglet, après avoir lancé ma procédure, j'ai :
1.
2.
...
20.
21. Plan
22.
23. Fiche technique
24. Note de calcul
par exemple...
C'est la raison pour laquelle une boucle me semblait le plus judicieux (Peut-être à tort !!).
Je vous remercie encore du temps que vous m'avez accordé.
Je vous remercie beaucoup d'avoir pris le temps de me répondre.
Lorsque je lance le programme, VBA m'envoie un message d'erreur : "Le mode Activate de la classe Range a échoué".
De plus, je pense m'être mal exprimé :
Si je comprends bien votre procédure, elle copie mon tableau entier dans le deuxième onglet. Or, j'aimerai pouvoir "ranger" les lignes de mon tableau une par une...
C'est à dire que dans le premier onglet j'ai qqch du type :
21. Plan
24. Note de calcul
23. Fiche technique
et que dans le deuxième onglet, après avoir lancé ma procédure, j'ai :
1.
2.
...
20.
21. Plan
22.
23. Fiche technique
24. Note de calcul
par exemple...
C'est la raison pour laquelle une boucle me semblait le plus judicieux (Peut-être à tort !!).
Je vous remercie encore du temps que vous m'avez accordé.
Il s'agissait d'exemples.
Ce sera plus clair avec le classeur, en effet :
https://www.cjoint.com/?3Fml32ojv4i
Merci encore Michel !
Ce sera plus clair avec le classeur, en effet :
https://www.cjoint.com/?3Fml32ojv4i
Merci encore Michel !