|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Date d'inscription: juillet 2008
Messages: 33
|
Bonjour à tous,
voici mon code Code :
Private Sub CommandButton1_Click() Dim ligdeb As Long, ligfin As Long Dim ligdeb2 As Long, dercol As Long Dim typ As String Dim c As Range Dim ws As Worksheet Set ws = Sheets("" & Range("c2").Value & "") If Range("c2").Value <> "" And Range("c3").Value <> "" Then typ = "" & Range("c3").Value Set c = ws.Columns("A:A").Find(typ, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then ligdeb2 = c.Row dercol = ws.Cells(ligdeb2, Rows(ligdeb2).Cells.Count).End(xlToLeft).Column + 1 ligdeb = Range("c8").End(xlDown).Row ligfin = Range("c18").End(xlUp).Row Range("c" & ligdeb, "c" & ligfin).Copy ws.Cells(ligdeb2, dercol) Range("c5", "c7").Copy ws.Cells(ligdeb2 - 3, dercol) End If End If End Sub Merci |
|
|
|
|
|
#2 |
|
Membre Expert
![]() Date d'inscription: juillet 2008
Messages: 1 253
|
Code :
ws.range(ws.Cells(ligdeb2 - 3, dercol),ws.cells(ligdeb2-1,dercol)).value=Range("c5:c7").value A et B doivent être de même dimension et ne pas oublier le .value
__________________
Cordialement. |
|
|
|
|
|
#3 |
|
Futur Membre du Club
![]() Date d'inscription: juillet 2008
Messages: 33
|
Merci mais ca ne fonctionne pas.
Tu me dis que Range(B).value=Range(A).value et que A et B doivent être de même dimension. Justement moi ma mise en forme d'arrivée est avec un format différent en taille, en plus il y a des bordures etc j'ai trituré ton code dans tout les sens mais je crois ne pas trop le comprendre. cordialement |
|
|
|
|
|
#4 |
|
Membre Expert
![]() Date d'inscription: juillet 2008
Messages: 1 253
|
Quand tu fais
Code :
Range("c5", "c7").Copy ws.Cells(ligdeb2 - 3, dercol) Ils ont bien la même dimension, C'est bien ça? et avec .copy, il te copie même la mise en forme Si tu désire garder la mise en forme des cellules de destination: Code :
ws.range(ws.Cells(ligdeb2 - 3, dercol),ws.cells(ligdeb2-1,dercol)).value=Range("c5:c7").value La traduction fidèle de ton code donne ceci Code :
Private Sub CommandButton1_Click() Dim ligdeb As Long, ligfin As Long Dim ligdeb2 As Long, dercol As Long Dim typ As String Dim c As Range Dim ws As Worksheet Set ws = Sheets(Range("C2").Value) With ws If Range("C2").Value <> "" And Range("C3").Value <> "" Then typ = Range("C3").Value Set c = .Columns("A:A").Find(typ, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then ligdeb2 = c.Row Set c = Nothing dercol = .Cells(ligdeb2, .Columns.Count).End(xlToLeft).Column + 1 ligdeb = Range("C8").End(xlDown).Row ligfin = Range("C18").End(xlUp).Row .Range(.Cells(ligdeb2, dercol), .Cells(ligdeb2 + ligfin - ligdeb, dercol)).Value = Range("C" & ligdeb & ":C" & ligfin).Value .Range(.Cells(ligdeb2 - 3, dercol), .Cells(ligdeb2 - 1, dercol)).Value = Range("C5:C7").Value End If End If End With Set ws = Nothing End Sub à toi de faire un pas pas F8 pour vérifier. Quand je dis que les ranges A et B doivent être de même taille, ça veut dire le même nombre de lignes et de colonnes (attention peut être aux cellules fusionnées)
__________________
Cordialement. |
|
|
|
|
|
#5 |
|
Nouveau membre du Club
![]() Date d'inscription: avril 2007
Messages: 72
|
Pourquoi ne pas utiliser la fonction paste special "utiliser le format de destination" :
Code :
.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False |
|
|
|
|
|
#6 |
|
Membre Expert
![]() Date d'inscription: juillet 2008
Messages: 1 253
|
Le pastspécial est aussi adapté. la différence, pas obligé de passer par le presse papier pour l'affectation directe.
question de choix
__________________
Cordialement. |
|
|
|
|
|
#7 |
|
Futur Membre du Club
![]() Date d'inscription: juillet 2008
Messages: 33
|
meci mercatog, ta phrase de code fonctionnait très bien, c'est juste que je ne l'avais pas compris ce matin (8h j'ai encore la tête dans le paté)
Et pastespecial je l'avais essayer mais ca ne marchait pas. Merci |
|
|
|
|
|
![]() |
||
[XL-2003] copier en gardant la mise en forme d'arrivée
|
||
| Outils de la discussion | |
|
|