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

Copier plusieurs cellulles d'une ligne

5 réponses
Avatar
JBF
Bonjour,

j'ai une macro qui recherche sur chaque ligne si la valeur en colonne 7 est
"matmut".

Si vrai = ça copie tte la ligne et ça la colle dans un autre onglet puis la
macro passe à la ligne d'en dessous.

Si faux = ça passe à la ligne d'en dessous

Plutôt que de copier la ligne entière je voudrais pouvoir copier uniquement
les cellules qui m'interesse : colonne 1, colonne 3, colonne 8 etc etc.

Ci dessous un bout de la macro que j'utilise :

For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1, 7).Value = "matmut" Then
Rw.Copy Destination:=Worksheets("test").Cells(Ligne, 1).EntireRow

End If

Next Rw

Comment la modifier?

merci
JBF

5 réponses

Avatar
Corto
Bonjour JBF,
For Each RW In Selection.Rows
Ligne = RW.Row
If RW.Cells(7).Value = "matmut" Then
Set XYZ = Union(RW.Cells(1), RW.Cells(3), RW.Cells(8))
XYZ.Copy Destination:=Worksheets("test").Cells(Ligne,
1).EntireRow
End If
Next RW

Corto

JBF a écrit :
Bonjour,

j'ai une macro qui recherche sur chaque ligne si la valeur en colonne 7 est
"matmut".

Si vrai = ça copie tte la ligne et ça la colle dans un autre ongl et puis la
macro passe à la ligne d'en dessous.

Si faux = ça passe à la ligne d'en dessous

Plutôt que de copier la ligne entière je voudrais pouvoir copier un iquement
les cellules qui m'interesse : colonne 1, colonne 3, colonne 8 etc etc.

Ci dessous un bout de la macro que j'utilise :

For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1, 7).Value = "matmut" Then
Rw.Copy Destination:=Worksheets("test").Cells(Ligne, 1).EntireRow

End If

Next Rw

Comment la modifier?

merci
JBF





Avatar
JBF
Parfait. Ça marche très bien.
Merci pour la rapidité

Bonne journée
JBF

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

Bonjour JBF,
For Each RW In Selection.Rows
Ligne = RW.Row
If RW.Cells(7).Value = "matmut" Then
Set XYZ = Union(RW.Cells(1), RW.Cells(3), RW.Cells(8))
XYZ.Copy Destination:=Worksheets("test").Cells(Ligne,
1).EntireRow
End If
Next RW

Corto

JBF a écrit :
Bonjour,

j'ai une macro qui recherche sur chaque ligne si la valeur en colonne 7
est "matmut".

Si vrai = ça copie tte la ligne et ça la colle dans un autre onglet puis
la macro passe à la ligne d'en dessous.

Si faux = ça passe à la ligne d'en dessous

Plutôt que de copier la ligne entière je voudrais pouvoir copier
uniquement les cellules qui m'interesse : colonne 1, colonne 3, colonne 8
etc etc.

Ci dessous un bout de la macro que j'utilise :

For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1, 7).Value = "matmut" Then
Rw.Copy Destination:=Worksheets("test").Cells(Ligne, 1).EntireRow

End If

Next Rw

Comment la modifier?

merci
JBF




Avatar
JBF
oups j'ai oublié qq chose dans ma demande!

Je voudrais que les cellules soient collées à partir de la colonne B et non
de la A et à partir de la ligne 3 et non la 1 comme c'est le cas
actuellement

Tu veux bien me montrer? j'ai essayé de bidouiller, en vain!

Merci

JBF

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

Bonjour JBF,
For Each RW In Selection.Rows
Ligne = RW.Row
If RW.Cells(7).Value = "matmut" Then
Set XYZ = Union(RW.Cells(1), RW.Cells(3), RW.Cells(8))
XYZ.Copy Destination:=Worksheets("test").Cells(Ligne,
1).EntireRow
End If
Next RW

Corto

JBF a écrit :
Bonjour,

j'ai une macro qui recherche sur chaque ligne si la valeur en colonne 7
est "matmut".

Si vrai = ça copie tte la ligne et ça la colle dans un autre onglet puis
la macro passe à la ligne d'en dessous.

Si faux = ça passe à la ligne d'en dessous

Plutôt que de copier la ligne entière je voudrais pouvoir copier
uniquement les cellules qui m'interesse : colonne 1, colonne 3, colonne 8
etc etc.

Ci dessous un bout de la macro que j'utilise :

For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1, 7).Value = "matmut" Then
Rw.Copy Destination:=Worksheets("test").Cells(Ligne, 1).EntireRow

End If

Next Rw

Comment la modifier?

merci
JBF




Avatar
JBF
Désolé c'est encore moi! ;)

Lorsque je rajoute une colonne à copier ça rate complètement au niveau du
collage :

Set XYZ = Union(Rw.Cells(1), Rw.Cells(3), Rw.Cells(8), Rw.Cells(11))
XYZ.Copy Destination:=Worksheets("test").Cells(Ligne, 1).EntireRow


Ça colle bien les 4 cellules copiées mais ça répète l'opération sur toutes
les colonnes. C'est à dire qu'en colonne 5 ça me recolle l'équivalent de le
colonne 1 etc etc.

Et en fait j'avais donné l'exemple sur 3 cellules à copier sur la même ligne
pensant qu'ensuite je pourrais me débrouiller seul mais apparemment non!
J'ai 8 cellules à copier et à coller.

Merci pour ton aide.

JBF


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

Bonjour JBF,
For Each RW In Selection.Rows
Ligne = RW.Row
If RW.Cells(7).Value = "matmut" Then
Set XYZ = Union(RW.Cells(1), RW.Cells(3), RW.Cells(8))
XYZ.Copy Destination:=Worksheets("test").Cells(Ligne,
1).EntireRow
End If
Next RW

Corto

JBF a écrit :
Bonjour,

j'ai une macro qui recherche sur chaque ligne si la valeur en colonne 7
est "matmut".

Si vrai = ça copie tte la ligne et ça la colle dans un autre onglet puis
la macro passe à la ligne d'en dessous.

Si faux = ça passe à la ligne d'en dessous

Plutôt que de copier la ligne entière je voudrais pouvoir copier
uniquement les cellules qui m'interesse : colonne 1, colonne 3, colonne 8
etc etc.

Ci dessous un bout de la macro que j'utilise :

For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1, 7).Value = "matmut" Then
Rw.Copy Destination:=Worksheets("test").Cells(Ligne, 1).EntireRow

End If

Next Rw

Comment la modifier?

merci
JBF




Avatar
Corto
C'est pour cela que la pauvre Lisette
Se sacrifia en songeant aux enfants
Tous les soirs désormais par les soins du placier
Les petits estomacs furent rassasiés

C'est pour pouvoir acheter l'entre quôtes
Qui nourrira les chères têtes blondes
Qu'elle commit son initiale faute
Qui la rabaisse au rang du demi-monde
Et le soir avec son amant
Si elle fait des heur's de supplément
C'est pour pouvoir acheter l'entre quôtes
L'entre quôtes...


JBF a écrit :
pfff j'suis vraiment mauvais!
merci

JBF

"Corto" <mailto: a
écrit dans le message de news:

<mailto:...
Bonjour JBF,
Quand il y a un espace dans le nom de l'onglet, il faut le mettre
entre quotes
Set XZONETRAVAIL = ['A envoyer'!A1].CurrentRegion

Corto

JBF a écrit :
je ne comprend pas pourquoi lorsque dans la macro "allégée" je
change l'intitulé des onglets ça me donne une erreur 424: obje t
requis sur cette ligne :

Set XZONETRAVAIL = [A envoyer!A1].CurrentRegion

L'onglet initial était [assurés!A1]. Il veut pas que je change le
nom!

"Corto" <mailto:
a écrit dans le message de news:

<mailto:...
Bonjour JBF,
http://cjoint.com/?lCkSRVSNm5
Les explications sont dans la macro Imprime_assurés_allégé e
dans le module 4

Corto

JBF a écrit :
merci. ça marche mieux sans Entire.Row effectivement.
Je fais mes essais ce soir et je te dis demain ce que ça do nne.

Merci bcp

Bonne soirée

JBF

"Corto"
<mailto: a écrit dans le message
de news: %
<mailto:%...
Bonjour JBF
/J'ai déjà trouvé quelque chose, je continue demain mais
il faut remplacer/
/ XYZ.Copy
Destination:=Worksheets("test").Cells(Ligne + 2,
2).EntireRow/
par/ XYZ.Copy
Destination:=Worksheets("test").Cells(Ligne + 2, 2)/
//
Corto

JBF a écrit :
et voilà : http://cjoint.com/?lBqGxMLxFn

Tu verras dans le MODULE 4 j'ai rajouté une cellule à
copier : Rw.Cells(9)

/If Rw.Cells(7).Value = "matmut" Then
Set XYZ = Union(Rw.Cells(1), Rw.Cells(3),
Rw.Cells(8), Rw.Cells(9))
XYZ.Copy
Destination:=Worksheets("test").Cells(Ligne + 2,
2).EntireRow
/

Et le résultat cloche complètement. tu t'en apercevr as
en ouvrant l'onget TEST.

Merci du (sérieux) coup de main!

JBF

"Corto"
<mailto: a écrit dans le
message de news:

<mailto:...
Bonjour JBF,
Désolé mais comme ça je ne vois pas ce qui clo che,
pourrais-tu me mettre une copie de ton classeur sur
cjoint en supprimant les éventuelles données
confidentielles et poster le lien.

Corto

JBF a écrit :
Désolé ça ne change rien. J'ai toujours les m ême
problèmes.

1/ les cellules ne se décalent pas en colonne B e t
ligne 3
2/ quand je rajoute une colonne à copier, ça me
"plante" le collage.

Je te mets l'intégralité de la macro ça va pe ut
être t'aider.

Sub Impime_assurés()

' COPIE DES LIGNES DESIREES DANS LES FEUILLES DE
CALCUL DEDIEES

Dim Rw As Range
Dim Ligne As Long

' Sélectionne l'ensemble des données

Sheets("Assurés").Select
activecell.SpecialCells(xlLastCell).Select
Range(Selection, Cells(1)).Select

' Boucle qui va passer sur chaque ligne de la
sélection afin de déterminer si des lignes
contiennent le nom de la mutuelle
' puis copie dans une deuxième feuille de calcul

For Each Rw In Selection.EntireRow.Rows
Ligne = Rw.Row
If Rw.Cells(7).Value = "matmut" Then
Set XYZ = Union(Rw.Cells(1),
Rw.Cells(3), Rw.Cells(8), Rw.Cells(9))
XYZ.Copy
Destination:=Worksheets("test").Cells(Ligne + 2,
2).EntireRow
End If
Next Rw

' Supression des lignes vierges dans les feuilles
de calcul récemment constituées

Sheets("test").Activate

With ActiveSheet.UsedRange
derLi = ..Row + ..Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).D elete
Next r

' Pop-up d'avertissement de fin de macro.

MsgBox "Le fichier est prêt pour envoi. Veuillez
effectuer un test de cohérence avant envoi.",
vbOKOnly, "Macro terminée"

End Sub


MERCI

JBF



"Corto"
<mailto: a écrit dans l e
message de news:

<mailto:.. .
(Re)Bonjour JBF,
Je voudrais que les cellules soient collées à partir de la colonne B et non
de la A et à partir de la ligne 3 et non la 1 comme c'est le cas
actuellement


For Each RW In Selection.*EntireRow *.Rows
Ligne = RW.Row
If RW.Cells(7).Value = "matmut" Then
Set XYZ = Union(RW.Cells(1),
RW.Cells(3), RW.Cells(8))
XYZ.Copy
Destination:=Worksheets("test").Cells(*Ligne +
2, 2*).EntireRow
End If
Next RW
Le second problème vient du fait que ta
sélection comporte moins de 11 Colonnes, le
..EntireRow permet de corriger

Corto

JBF a écrit :
Désolé c'est encore moi! ;)

Lorsque je rajoute une colonne à copier ça rate complètement au niveau du
collage :

Set XYZ = Union(Rw.Cells(1), Rw.Cells(3), Rw .Cells(8), Rw.Cells(11))
XYZ.Copy Destination:=Worksheets("test") .Cells(Ligne, 1).EntireRow


Ça colle bien les 4 cellules copiées mais ça répète l'opération sur toutes
les colonnes. C'est à dire qu'en colonne 5 ç a me recolle l'équivalent de le
colonne 1 etc etc.

Et en fait j'avais donné l'exemple sur 3 cel lules à copier sur la même ligne
pensant qu'ensuite je pourrais me débrouille r seul mais apparemment non!
J'ai 8 cellules à copier et à coller.

Merci pour ton aide.

JBF


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

Bonjour JBF,
For Each RW In Selection.Rows
Ligne = RW.Row
If RW.Cells(7).Value = "matmut" Then
Set XYZ = Union(RW.Cells(1), RW. Cells(3), RW.Cells(8))
XYZ.Copy Destination:=Worksheets ("test").Cells(Ligne,
1).EntireRow
End If
Next RW

Corto

JBF a écrit :

Bonjour,

j'ai une macro qui recherche sur chaque ligne si la valeur en colonne 7
est "matmut".

Si vrai = ça copie tte la ligne et ça l a colle dans un autre onglet puis
la macro passe à la ligne d'en dessous.

Si faux = ça passe à la ligne d'en dess ous

Plutôt que de copier la ligne entière je voudrais pouvoir copier
uniquement les cellules qui m'interesse : col onne 1, colonne 3, colonne 8
etc etc.

Ci dessous un bout de la macro que j'utilise :

For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1, 7).Value = "matmut" Then
Rw.Copy Destination:=Worksheets("test").Cel ls(Ligne, 1).EntireRow

End If

Next Rw

Comment la modifier?

merci
JBF