Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Améliorer la copie d’une ligne avec une sub en VBA

18 réponses
Avatar
Frasax
Je débute en VBA et je trouve ça très complexe, raison pour laquelle je fais
appelle à des connaisseurs afin de me donner un coup de pouce.
Voici le problème ; j’ai un classeur de 10 feuilles dont chacune contiennent
100 lignes.
Je dois reporter certaines lignes d’une feuille dans un brouillon sans
perdre les données de la feuille maître et sans que les lignes dans le
brouillon s’efface à chaque transfert . Cela peut être recopié dans le même
classeur, ou dans un autre classeur si cette solution existe « mais ça c’est
déjà pour des professionnelles avertis ».
J’ai trouvé une solution, mais pas pratique du tout.
Voici un bref aperçu pour 3 lignes.

Sub RecopieLigne1()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a4:j4").Value = _
Sheets("Feuil1").Range("G5:P5").Value
End Sub
Sub RecopieLigne2()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a5:j5").Value = _
Sheets("Feuil1").Range("G6:P6").Value
End Sub
Sub RecopieLigne3()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a6:j6").Value = _
Sheets("Feuil1").Range("G7:P7").Value
End Sub

Ca fonctionne, le transfert ce fait, mais l’inconvénient c’est que si une
ligne doit être lue 2 fois il y a problème.
Merci d’avance à ceux qui peuvent me donner la solution.
Cordialement
Francis

10 réponses

1 2
Avatar
Jacky
----?????-----

Quelles sont les lignes à copier?
Sont elles les mêmes dans chaque feuille ?
Comment est lancé la procédure actuellement ?
Quel est le nom de la feuille de destination ?

--
Salutations
JJ

"Frasax" a écrit dans le message de news:

Je débute en VBA et je trouve ça très complexe, raison pour laquelle je
fais
appelle à des connaisseurs afin de me donner un coup de pouce.
Voici le problème ; j'ai un classeur de 10 feuilles dont chacune
contiennent
100 lignes.
Je dois reporter certaines lignes d'une feuille dans un brouillon sans
perdre les données de la feuille maître et sans que les lignes dans le
brouillon s'efface à chaque transfert . Cela peut être recopié dans le
même
classeur, ou dans un autre classeur si cette solution existe « mais ça c'est
déjà pour des professionnelles avertis ».
J'ai trouvé une solution, mais pas pratique du tout.
Voici un bref aperçu pour 3 lignes.

Sub RecopieLigne1()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a4:j4").Value = _
Sheets("Feuil1").Range("G5:P5").Value
End Sub
Sub RecopieLigne2()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a5:j5").Value = _
Sheets("Feuil1").Range("G6:P6").Value
End Sub
Sub RecopieLigne3()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a6:j6").Value = _
Sheets("Feuil1").Range("G7:P7").Value
End Sub

Ca fonctionne, le transfert ce fait, mais l'inconvénient c'est que si une
ligne doit être lue 2 fois il y a problème.
Merci d'avance à ceux qui peuvent me donner la solution.
Cordialement
Francis



Avatar
Frasax
Les lignes sont G5:P5 jusqu'à G104 à P104 dans toutes les feuilles du classeur.
La feuille destination peut être facturation ou Feuille 15? par exemple
Je comprend pas comment est lancé la procédure ? Je fais Outils, Macro,
RecopieLigne1 par exemple.


"Jacky" wrote:

----?????-----

Quelles sont les lignes à copier?
Sont elles les mêmes dans chaque feuille ?
Comment est lancé la procédure actuellement ?
Quel est le nom de la feuille de destination ?

--
Salutations
JJ

"Frasax" a écrit dans le message de news:

Je débute en VBA et je trouve ça très complexe, raison pour laquelle je
fais
appelle à des connaisseurs afin de me donner un coup de pouce.
Voici le problème ; j'ai un classeur de 10 feuilles dont chacune
contiennent
100 lignes.
Je dois reporter certaines lignes d'une feuille dans un brouillon sans
perdre les données de la feuille maître et sans que les lignes dans le
brouillon s'efface à chaque transfert . Cela peut être recopié dans le
même
classeur, ou dans un autre classeur si cette solution existe « mais ça c'est
déjà pour des professionnelles avertis ».
J'ai trouvé une solution, mais pas pratique du tout.
Voici un bref aperçu pour 3 lignes.

Sub RecopieLigne1()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a4:j4").Value = _
Sheets("Feuil1").Range("G5:P5").Value
End Sub
Sub RecopieLigne2()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a5:j5").Value = _
Sheets("Feuil1").Range("G6:P6").Value
End Sub
Sub RecopieLigne3()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a6:j6").Value = _
Sheets("Feuil1").Range("G7:P7").Value
End Sub

Ca fonctionne, le transfert ce fait, mais l'inconvénient c'est que si une
ligne doit être lue 2 fois il y a problème.
Merci d'avance à ceux qui peuvent me donner la solution.
Cordialement
Francis








Avatar
Jacky
Re
Ok
Essaie ceci:
La feuille "Facturation" doit existée, au besoin la créer.
'---------
Sub jj()
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" Then
Sheets(f).[g5:p5].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
Sheets(f).[g104:p104].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
End If
Next
End Sub
'--------
Je comprend pas comment est lancé la procédure ?
Par un bouton ?? directement dans l'éditeur ??


--
Salutations
JJ

"Frasax" a écrit dans le message de news:

Les lignes sont G5:P5 jusqu'à G104 à P104 dans toutes les feuilles du
classeur.
La feuille destination peut être facturation ou Feuille 15? par exemple
Je comprend pas comment est lancé la procédure ? Je fais Outils, Macro,
RecopieLigne1 par exemple.


"Jacky" wrote:

----?????-----

Quelles sont les lignes à copier?
Sont elles les mêmes dans chaque feuille ?
Comment est lancé la procédure actuellement ?
Quel est le nom de la feuille de destination ?

--
Salutations
JJ

"Frasax" a écrit dans le message de
news:

Je débute en VBA et je trouve ça très complexe, raison pour laquelle je
fais
appelle à des connaisseurs afin de me donner un coup de pouce.
Voici le problème ; j'ai un classeur de 10 feuilles dont chacune
contiennent
100 lignes.
Je dois reporter certaines lignes d'une feuille dans un brouillon sans
perdre les données de la feuille maître et sans que les lignes dans le
brouillon s'efface à chaque transfert . Cela peut être recopié dans le
même
classeur, ou dans un autre classeur si cette solution existe « mais ça
c'est
déjà pour des professionnelles avertis ».
J'ai trouvé une solution, mais pas pratique du tout.
Voici un bref aperçu pour 3 lignes.

Sub RecopieLigne1()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a4:j4").Value = _
Sheets("Feuil1").Range("G5:P5").Value
End Sub
Sub RecopieLigne2()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a5:j5").Value = _
Sheets("Feuil1").Range("G6:P6").Value
End Sub
Sub RecopieLigne3()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a6:j6").Value = _
Sheets("Feuil1").Range("G7:P7").Value
End Sub

Ca fonctionne, le transfert ce fait, mais l'inconvénient c'est que si
une
ligne doit être lue 2 fois il y a problème.
Merci d'avance à ceux qui peuvent me donner la solution.
Cordialement
Francis










Avatar
Frasax
Il y a du bon, c'est que la ligne vient ce coller dans facturation.
Mais il y a des problèmes, c'est qu'il y a une référence circulaire avec
facturation!$E$2 qui est le bouton de commande des lignes.
D'autre part, il y a des lignes supplémentaires qui viennent se coller et
qui sont des lignes cachées, je ne sais pas pourquoi et comment le programme
les trouve.
Merci déjà pour ce qui est fait comme travail et merci si vous pouvez
trouvez une solution à ce problème.

A+

"Jacky" wrote:

Re
Ok
Essaie ceci:
La feuille "Facturation" doit existée, au besoin la créer.
'---------
Sub jj()
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" Then
Sheets(f).[g5:p5].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
Sheets(f).[g104:p104].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
End If
Next
End Sub
'--------
Je comprend pas comment est lancé la procédure ?
Par un bouton ?? directement dans l'éditeur ??


--
Salutations
JJ

"Frasax" a écrit dans le message de news:

Les lignes sont G5:P5 jusqu'à G104 à P104 dans toutes les feuilles du
classeur.
La feuille destination peut être facturation ou Feuille 15? par exemple
Je comprend pas comment est lancé la procédure ? Je fais Outils, Macro,
RecopieLigne1 par exemple.


"Jacky" wrote:

----?????-----

Quelles sont les lignes à copier?
Sont elles les mêmes dans chaque feuille ?
Comment est lancé la procédure actuellement ?
Quel est le nom de la feuille de destination ?

--
Salutations
JJ

"Frasax" a écrit dans le message de
news:

Je débute en VBA et je trouve ça très complexe, raison pour laquelle je
fais
appelle à des connaisseurs afin de me donner un coup de pouce.
Voici le problème ; j'ai un classeur de 10 feuilles dont chacune
contiennent
100 lignes.
Je dois reporter certaines lignes d'une feuille dans un brouillon sans
perdre les données de la feuille maître et sans que les lignes dans le
brouillon s'efface à chaque transfert . Cela peut être recopié dans le
même
classeur, ou dans un autre classeur si cette solution existe « mais ça
c'est
déjà pour des professionnelles avertis ».
J'ai trouvé une solution, mais pas pratique du tout.
Voici un bref aperçu pour 3 lignes.

Sub RecopieLigne1()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a4:j4").Value = _
Sheets("Feuil1").Range("G5:P5").Value
End Sub
Sub RecopieLigne2()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a5:j5").Value = _
Sheets("Feuil1").Range("G6:P6").Value
End Sub
Sub RecopieLigne3()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a6:j6").Value = _
Sheets("Feuil1").Range("G7:P7").Value
End Sub

Ca fonctionne, le transfert ce fait, mais l'inconvénient c'est que si
une
ligne doit être lue 2 fois il y a problème.
Merci d'avance à ceux qui peuvent me donner la solution.
Cordialement
Francis















Avatar
Frasax
J'ai trouvé quelles lignes s'affichent en plus, j'ai une feuille nommée Table
ou tous les articles y sont détaillés. Je ne comprend pas pourquoi ses lignes
viennent s'afficher. La sélection est faite de la manière suivante, j'ouvre
la feuille produit, ou il y 100 boutons et en haut un bouton défilant pour
rechercher les produits dans une ligne, le produit trouvé, je clic sur la
macro qui transfert la ligne dans la feuille facturation.
A+

"Frasax" wrote:

Il y a du bon, c'est que la ligne vient ce coller dans facturation.
Mais il y a des problèmes, c'est qu'il y a une référence circulaire avec
facturation!$E$2 qui est le bouton de commande des lignes.
D'autre part, il y a des lignes supplémentaires qui viennent se coller et
qui sont des lignes cachées, je ne sais pas pourquoi et comment le programme
les trouve.
Merci déjà pour ce qui est fait comme travail et merci si vous pouvez
trouvez une solution à ce problème.

A+

"Jacky" wrote:

Re
Ok
Essaie ceci:
La feuille "Facturation" doit existée, au besoin la créer.
'---------
Sub jj()
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" Then
Sheets(f).[g5:p5].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
Sheets(f).[g104:p104].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
End If
Next
End Sub
'--------
Je comprend pas comment est lancé la procédure ?
Par un bouton ?? directement dans l'éditeur ??


--
Salutations
JJ

"Frasax" a écrit dans le message de news:

Les lignes sont G5:P5 jusqu'à G104 à P104 dans toutes les feuilles du
classeur.
La feuille destination peut être facturation ou Feuille 15? par exemple
Je comprend pas comment est lancé la procédure ? Je fais Outils, Macro,
RecopieLigne1 par exemple.


"Jacky" wrote:

----?????-----

Quelles sont les lignes à copier?
Sont elles les mêmes dans chaque feuille ?
Comment est lancé la procédure actuellement ?
Quel est le nom de la feuille de destination ?

--
Salutations
JJ

"Frasax" a écrit dans le message de
news:

Je débute en VBA et je trouve ça très complexe, raison pour laquelle je
fais
appelle à des connaisseurs afin de me donner un coup de pouce.
Voici le problème ; j'ai un classeur de 10 feuilles dont chacune
contiennent
100 lignes.
Je dois reporter certaines lignes d'une feuille dans un brouillon sans
perdre les données de la feuille maître et sans que les lignes dans le
brouillon s'efface à chaque transfert . Cela peut être recopié dans le
même
classeur, ou dans un autre classeur si cette solution existe « mais ça
c'est
déjà pour des professionnelles avertis ».
J'ai trouvé une solution, mais pas pratique du tout.
Voici un bref aperçu pour 3 lignes.

Sub RecopieLigne1()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a4:j4").Value = _
Sheets("Feuil1").Range("G5:P5").Value
End Sub
Sub RecopieLigne2()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a5:j5").Value = _
Sheets("Feuil1").Range("G6:P6").Value
End Sub
Sub RecopieLigne3()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a6:j6").Value = _
Sheets("Feuil1").Range("G7:P7").Value
End Sub

Ca fonctionne, le transfert ce fait, mais l'inconvénient c'est que si
une
ligne doit être lue 2 fois il y a problème.
Merci d'avance à ceux qui peuvent me donner la solution.
Cordialement
Francis

















Avatar
Jacky
Re..
Il y a certainement des formules dans les cellules copiées.
Ceci ne copie que la valeur des cellules.
'-----------
Sub jj2()
Application.ScreenUpdating = False
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" Then
Sheets(f).[g5:p5].Copy
Sheets("facturation").Activate
Range("a" & derlg).Activate
ActiveCell.PasteSpecial Paste:=xlPasteValues
derlg = derlg + 1
Sheets(f).[g104:p104].Copy
Sheets("facturation").Activate
Range("a" & derlg).Activate
ActiveCell.PasteSpecial Paste:=xlPasteValues
derlg = derlg + 1
End If
Next
End Sub
'---------------------------

--
Salutations
JJ

"Frasax" a écrit dans le message de news:

Il y a du bon, c'est que la ligne vient ce coller dans facturation.
Mais il y a des problèmes, c'est qu'il y a une référence circulaire avec
facturation!$E$2 qui est le bouton de commande des lignes.
D'autre part, il y a des lignes supplémentaires qui viennent se coller et
qui sont des lignes cachées, je ne sais pas pourquoi et comment le
programme
les trouve.
Merci déjà pour ce qui est fait comme travail et merci si vous pouvez
trouvez une solution à ce problème.

A+

"Jacky" wrote:

Re
Ok
Essaie ceci:
La feuille "Facturation" doit existée, au besoin la créer.
'---------
Sub jj()
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" Then
Sheets(f).[g5:p5].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
Sheets(f).[g104:p104].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
End If
Next
End Sub
'--------
Je comprend pas comment est lancé la procédure ?
Par un bouton ?? directement dans l'éditeur ??


--
Salutations
JJ

"Frasax" a écrit dans le message de
news:

Les lignes sont G5:P5 jusqu'à G104 à P104 dans toutes les feuilles du
classeur.
La feuille destination peut être facturation ou Feuille 15? par exemple
Je comprend pas comment est lancé la procédure ? Je fais Outils, Macro,
RecopieLigne1 par exemple.


"Jacky" wrote:

----?????-----

Quelles sont les lignes à copier?
Sont elles les mêmes dans chaque feuille ?
Comment est lancé la procédure actuellement ?
Quel est le nom de la feuille de destination ?

--
Salutations
JJ

"Frasax" a écrit dans le message de
news:

Je débute en VBA et je trouve ça très complexe, raison pour laquelle
je
fais
appelle à des connaisseurs afin de me donner un coup de pouce.
Voici le problème ; j'ai un classeur de 10 feuilles dont chacune
contiennent
100 lignes.
Je dois reporter certaines lignes d'une feuille dans un brouillon
sans
perdre les données de la feuille maître et sans que les lignes dans
le
brouillon s'efface à chaque transfert . Cela peut être recopié dans
le
même
classeur, ou dans un autre classeur si cette solution existe « mais
ça
c'est
déjà pour des professionnelles avertis ».
J'ai trouvé une solution, mais pas pratique du tout.
Voici un bref aperçu pour 3 lignes.

Sub RecopieLigne1()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a4:j4").Value = _
Sheets("Feuil1").Range("G5:P5").Value
End Sub
Sub RecopieLigne2()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a5:j5").Value = _
Sheets("Feuil1").Range("G6:P6").Value
End Sub
Sub RecopieLigne3()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a6:j6").Value = _
Sheets("Feuil1").Range("G7:P7").Value
End Sub

Ca fonctionne, le transfert ce fait, mais l'inconvénient c'est que
si
une
ligne doit être lue 2 fois il y a problème.
Merci d'avance à ceux qui peuvent me donner la solution.
Cordialement
Francis

















Avatar
Frasax
Les formules ne sont plus recopiées ça c'est OK, bon travail. J'ai malgré
tout toujours 2 lignes ajoutées qui proviennent de la feuille Table. D'autre
part, je n'ai pas expliqué l'autre problème, c'est que dans la feuille
produit, je ne peux sélectionner qu'une seule ligne à la fois et la tranférer
dans la feuille facturation. Or, le transfert avec le programme ne cumule pas
les lignes ajoutées une à une.
Je m'explique, je clic la ligne 2, je sélectionne le produit et suis obligé
de le transférer, puis la ligne 5 ainsi de suite.
C'est compliqué mais, je ne peux pas faire autrement.
Merci A+



"Jacky" wrote:

Re..
Il y a certainement des formules dans les cellules copiées.
Ceci ne copie que la valeur des cellules.
'-----------
Sub jj2()
Application.ScreenUpdating = False
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" Then
Sheets(f).[g5:p5].Copy
Sheets("facturation").Activate
Range("a" & derlg).Activate
ActiveCell.PasteSpecial Paste:=xlPasteValues
derlg = derlg + 1
Sheets(f).[g104:p104].Copy
Sheets("facturation").Activate
Range("a" & derlg).Activate
ActiveCell.PasteSpecial Paste:=xlPasteValues
derlg = derlg + 1
End If
Next
End Sub
'---------------------------

--
Salutations
JJ

"Frasax" a écrit dans le message de news:

Il y a du bon, c'est que la ligne vient ce coller dans facturation.
Mais il y a des problèmes, c'est qu'il y a une référence circulaire avec
facturation!$E$2 qui est le bouton de commande des lignes.
D'autre part, il y a des lignes supplémentaires qui viennent se coller et
qui sont des lignes cachées, je ne sais pas pourquoi et comment le
programme
les trouve.
Merci déjà pour ce qui est fait comme travail et merci si vous pouvez
trouvez une solution à ce problème.

A+

"Jacky" wrote:

Re
Ok
Essaie ceci:
La feuille "Facturation" doit existée, au besoin la créer.
'---------
Sub jj()
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" Then
Sheets(f).[g5:p5].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
Sheets(f).[g104:p104].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
End If
Next
End Sub
'--------
Je comprend pas comment est lancé la procédure ?
Par un bouton ?? directement dans l'éditeur ??


--
Salutations
JJ

"Frasax" a écrit dans le message de
news:

Les lignes sont G5:P5 jusqu'à G104 à P104 dans toutes les feuilles du
classeur.
La feuille destination peut être facturation ou Feuille 15? par exemple
Je comprend pas comment est lancé la procédure ? Je fais Outils, Macro,
RecopieLigne1 par exemple.


"Jacky" wrote:

----?????-----

Quelles sont les lignes à copier?
Sont elles les mêmes dans chaque feuille ?
Comment est lancé la procédure actuellement ?
Quel est le nom de la feuille de destination ?

--
Salutations
JJ

"Frasax" a écrit dans le message de
news:

Je débute en VBA et je trouve ça très complexe, raison pour laquelle
je
fais
appelle à des connaisseurs afin de me donner un coup de pouce.
Voici le problème ; j'ai un classeur de 10 feuilles dont chacune
contiennent
100 lignes.
Je dois reporter certaines lignes d'une feuille dans un brouillon
sans
perdre les données de la feuille maître et sans que les lignes dans
le
brouillon s'efface à chaque transfert . Cela peut être recopié dans
le
même
classeur, ou dans un autre classeur si cette solution existe « mais
ça
c'est
déjà pour des professionnelles avertis ».
J'ai trouvé une solution, mais pas pratique du tout.
Voici un bref aperçu pour 3 lignes.

Sub RecopieLigne1()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a4:j4").Value = _
Sheets("Feuil1").Range("G5:P5").Value
End Sub
Sub RecopieLigne2()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a5:j5").Value = _
Sheets("Feuil1").Range("G6:P6").Value
End Sub
Sub RecopieLigne3()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a6:j6").Value = _
Sheets("Feuil1").Range("G7:P7").Value
End Sub

Ca fonctionne, le transfert ce fait, mais l'inconvénient c'est que
si
une
ligne doit être lue 2 fois il y a problème.
Merci d'avance à ceux qui peuvent me donner la solution.
Cordialement
Francis






















Avatar
Frasax
Je me sus mal expliqué en ce qui concerne la copie des lignes. Le programme
copie actuellement la ligne g5:p5 et g104:p104, or entre il y a les lignes
g6:p6, g7:p7 ainsi de suite jusqu'à la ligne g104:p104. C'est du fou, mais je
ne peux pas faire autrement. Y a t-il un solution, ou faut-il recopié les
modules intermédiaires depuis g6:p6 et jusqu'à g105:p105.
A+

"Frasax" wrote:

Les formules ne sont plus recopiées ça c'est OK, bon travail. J'ai malgré
tout toujours 2 lignes ajoutées qui proviennent de la feuille Table. D'autre
part, je n'ai pas expliqué l'autre problème, c'est que dans la feuille
produit, je ne peux sélectionner qu'une seule ligne à la fois et la tranférer
dans la feuille facturation. Or, le transfert avec le programme ne cumule pas
les lignes ajoutées une à une.
Je m'explique, je clic la ligne 2, je sélectionne le produit et suis obligé
de le transférer, puis la ligne 5 ainsi de suite.
C'est compliqué mais, je ne peux pas faire autrement.
Merci A+



"Jacky" wrote:

Re..
Il y a certainement des formules dans les cellules copiées.
Ceci ne copie que la valeur des cellules.
'-----------
Sub jj2()
Application.ScreenUpdating = False
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" Then
Sheets(f).[g5:p5].Copy
Sheets("facturation").Activate
Range("a" & derlg).Activate
ActiveCell.PasteSpecial Paste:=xlPasteValues
derlg = derlg + 1
Sheets(f).[g104:p104].Copy
Sheets("facturation").Activate
Range("a" & derlg).Activate
ActiveCell.PasteSpecial Paste:=xlPasteValues
derlg = derlg + 1
End If
Next
End Sub
'---------------------------

--
Salutations
JJ

"Frasax" a écrit dans le message de news:

Il y a du bon, c'est que la ligne vient ce coller dans facturation.
Mais il y a des problèmes, c'est qu'il y a une référence circulaire avec
facturation!$E$2 qui est le bouton de commande des lignes.
D'autre part, il y a des lignes supplémentaires qui viennent se coller et
qui sont des lignes cachées, je ne sais pas pourquoi et comment le
programme
les trouve.
Merci déjà pour ce qui est fait comme travail et merci si vous pouvez
trouvez une solution à ce problème.

A+

"Jacky" wrote:

Re
Ok
Essaie ceci:
La feuille "Facturation" doit existée, au besoin la créer.
'---------
Sub jj()
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" Then
Sheets(f).[g5:p5].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
Sheets(f).[g104:p104].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
End If
Next
End Sub
'--------
Je comprend pas comment est lancé la procédure ?
Par un bouton ?? directement dans l'éditeur ??


--
Salutations
JJ

"Frasax" a écrit dans le message de
news:

Les lignes sont G5:P5 jusqu'à G104 à P104 dans toutes les feuilles du
classeur.
La feuille destination peut être facturation ou Feuille 15? par exemple
Je comprend pas comment est lancé la procédure ? Je fais Outils, Macro,
RecopieLigne1 par exemple.


"Jacky" wrote:

----?????-----

Quelles sont les lignes à copier?
Sont elles les mêmes dans chaque feuille ?
Comment est lancé la procédure actuellement ?
Quel est le nom de la feuille de destination ?

--
Salutations
JJ

"Frasax" a écrit dans le message de
news:

Je débute en VBA et je trouve ça très complexe, raison pour laquelle
je
fais
appelle à des connaisseurs afin de me donner un coup de pouce.
Voici le problème ; j'ai un classeur de 10 feuilles dont chacune
contiennent
100 lignes.
Je dois reporter certaines lignes d'une feuille dans un brouillon
sans
perdre les données de la feuille maître et sans que les lignes dans
le
brouillon s'efface à chaque transfert . Cela peut être recopié dans
le
même
classeur, ou dans un autre classeur si cette solution existe « mais
ça
c'est
déjà pour des professionnelles avertis ».
J'ai trouvé une solution, mais pas pratique du tout.
Voici un bref aperçu pour 3 lignes.

Sub RecopieLigne1()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a4:j4").Value = _
Sheets("Feuil1").Range("G5:P5").Value
End Sub
Sub RecopieLigne2()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a5:j5").Value = _
Sheets("Feuil1").Range("G6:P6").Value
End Sub
Sub RecopieLigne3()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a6:j6").Value = _
Sheets("Feuil1").Range("G7:P7").Value
End Sub

Ca fonctionne, le transfert ce fait, mais l'inconvénient c'est que
si
une
ligne doit être lue 2 fois il y a problème.
Merci d'avance à ceux qui peuvent me donner la solution.
Cordialement
Francis
























Avatar
Jacky
Re...
Bon,,, reprenons
Si j'ai bien compris c'est une plage que tu veux copier: G5:P104 et non pas
des lignes.

Cette ligne de code élimine les feuilles qui ne doivent pas être copiées,
s'il y en a d'autres , il faut les rajouter.
If Sheets(f).Name <> "facturation" And Sheets(f).Name <> "table" Then
Dans celle -ci j'ai déjà rajouter la feuille "Table"
Le code s'en trouve allégé.
'------------
Sub jj3()
Application.ScreenUpdating = False
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" And Sheets(f).Name <> "table" Then
Sheets(f).[g5:p104].Copy
Sheets("facturation").Activate
Range("a" & derlg).PasteSpecial Paste:=xlPasteValues
derlg = Sheets("facturation").Range("a65536").End(3).Row
End If
Next
End Sub
'---------------
Si ce n'est pas cela , mettre une copie du fichier sur:
http://cjoint.com/

Et à demain.
JJ


"Frasax" a écrit dans le message de
news:
Je me sus mal expliqué en ce qui concerne la copie des lignes. Le
programme

copie actuellement la ligne g5:p5 et g104:p104, or entre il y a les lignes
g6:p6, g7:p7 ainsi de suite jusqu'à la ligne g104:p104. C'est du fou, mais
je

ne peux pas faire autrement. Y a t-il un solution, ou faut-il recopié les
modules intermédiaires depuis g6:p6 et jusqu'à g105:p105.
A+

"Frasax" wrote:

Les formules ne sont plus recopiées ça c'est OK, bon travail. J'ai
malgré


tout toujours 2 lignes ajoutées qui proviennent de la feuille Table.
D'autre


part, je n'ai pas expliqué l'autre problème, c'est que dans la feuille
produit, je ne peux sélectionner qu'une seule ligne à la fois et la
tranférer


dans la feuille facturation. Or, le transfert avec le programme ne
cumule pas


les lignes ajoutées une à une.
Je m'explique, je clic la ligne 2, je sélectionne le produit et suis
obligé


de le transférer, puis la ligne 5 ainsi de suite.
C'est compliqué mais, je ne peux pas faire autrement.
Merci A+



"Jacky" wrote:

Re..
Il y a certainement des formules dans les cellules copiées.
Ceci ne copie que la valeur des cellules.
'-----------
Sub jj2()
Application.ScreenUpdating = False
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" Then
Sheets(f).[g5:p5].Copy
Sheets("facturation").Activate
Range("a" & derlg).Activate
ActiveCell.PasteSpecial Paste:=xlPasteValues
derlg = derlg + 1
Sheets(f).[g104:p104].Copy
Sheets("facturation").Activate
Range("a" & derlg).Activate
ActiveCell.PasteSpecial Paste:=xlPasteValues
derlg = derlg + 1
End If
Next
End Sub
'---------------------------

--
Salutations
JJ

"Frasax" a écrit dans le message de
news:




Il y a du bon, c'est que la ligne vient ce coller dans facturation.
Mais il y a des problèmes, c'est qu'il y a une référence circulaire
avec




facturation!$E$2 qui est le bouton de commande des lignes.
D'autre part, il y a des lignes supplémentaires qui viennent se
coller et




qui sont des lignes cachées, je ne sais pas pourquoi et comment le
programme
les trouve.
Merci déjà pour ce qui est fait comme travail et merci si vous
pouvez




trouvez une solution à ce problème.

A+

"Jacky" wrote:

Re
Ok
Essaie ceci:
La feuille "Facturation" doit existée, au besoin la créer.
'---------
Sub jj()
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" Then
Sheets(f).[g5:p5].Copy Sheets("facturation").Range("a" & derlg)
derlg = derlg + 1
Sheets(f).[g104:p104].Copy Sheets("facturation").Range("a" &
derlg)





derlg = derlg + 1
End If
Next
End Sub
'--------
Je comprend pas comment est lancé la procédure ?
Par un bouton ?? directement dans l'éditeur ??


--
Salutations
JJ

"Frasax" a écrit dans le message
de





news:

Les lignes sont G5:P5 jusqu'à G104 à P104 dans toutes les
feuilles du






classeur.
La feuille destination peut être facturation ou Feuille 15? par
exemple






Je comprend pas comment est lancé la procédure ? Je fais Outils,
Macro,






RecopieLigne1 par exemple.


"Jacky" wrote:

----?????-----

Quelles sont les lignes à copier?
Sont elles les mêmes dans chaque feuille ?
Comment est lancé la procédure actuellement ?
Quel est le nom de la feuille de destination ?

--
Salutations
JJ

"Frasax" a écrit dans le
message de







news:

Je débute en VBA et je trouve ça très complexe, raison pour
laquelle








je
fais
appelle à des connaisseurs afin de me donner un coup de pouce.
Voici le problème ; j'ai un classeur de 10 feuilles dont
chacune








contiennent
100 lignes.
Je dois reporter certaines lignes d'une feuille dans un
brouillon








sans
perdre les données de la feuille maître et sans que les lignes
dans








le
brouillon s'efface à chaque transfert . Cela peut être recopié
dans








le
même
classeur, ou dans un autre classeur si cette solution existe
« mais








ça
c'est
déjà pour des professionnelles avertis ».
J'ai trouvé une solution, mais pas pratique du tout.
Voici un bref aperçu pour 3 lignes.

Sub RecopieLigne1()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a4:j4").Value = _
Sheets("Feuil1").Range("G5:P5").Value
End Sub
Sub RecopieLigne2()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a5:j5").Value = _
Sheets("Feuil1").Range("G6:P6").Value
End Sub
Sub RecopieLigne3()
Sheets("Feuil2").Rows("150:150").Insert
Sheets("Feuil2").Range("a6:j6").Value = _
Sheets("Feuil1").Range("G7:P7").Value
End Sub

Ca fonctionne, le transfert ce fait, mais l'inconvénient c'est
que








si
une
ligne doit être lue 2 fois il y a problème.
Merci d'avance à ceux qui peuvent me donner la solution.
Cordialement
Francis


























Avatar
Jacky
re..
Plutôt ceci
'-------
Sub jj3()
Application.ScreenUpdating = False
derlg = Sheets("facturation").Range("a65536").End(3).Row + 1
For f = 1 To Worksheets.Count
If Sheets(f).Name <> "facturation" And Sheets(f).Name <> "table" Then
Sheets(f).[g5:p104].Copy
Sheets("facturation").Activate
Range("a" & derlg).PasteSpecial Paste:=xlPasteValues
derlg = derlg + 100
End If
Next
End Sub
'----------
Bonne nuit.
JJ
1 2