OVH Cloud OVH Cloud

code vba

1 réponse
Avatar
srogeau
bonjour
code de denismichon (transferer des lignes)
le code ci-dessous (code de denismichon (transferer des lignes) me transfere
les lignes demandees, d'une feuill (chaleur) vers une autre feuill (histo) .
Est ce possible qu'au niveau du transfere il importe uniquement les donnees
inscrites dans la feuille (chaleur) c'est a dire sans les formules .par contre
il garde les autres actions d'effacement de donnees transferees
sans cette modif ,les donnees tranferees ne sont pas exactes car les formules
modifient le resultat sur la feuille qui recoit le transfer
j'espere que ma demande est suffisamment explicite
Sub Transferer_Lignes()

Dim NoLignes As Variant, NLig As Variant
Dim Rg As Range, Rg1 As Range, A As Long
Dim Dest As Range

'Les Numéros de lignes à transférer
NoLignes = Application.InputBox("Vos numéros de lignes." & _
"Syntaxe : 1-5-10", "Transfert de lignes", , , , , , 2)

If NoLignes = "Faux" Then Exit Sub

'Détermine où copier les données
With Worksheets("histo")
If .Range("A1") = "" Then
Set Dest = .Range("A1")
Else
Set Dest = .Range("A" & .Range("a65536").End(xlUp)(2).Row)
End If
End With

NLig = Split(NoLignes, "-")

'Identifie la plage à copier
With Worksheets("chaleur")
For A = LBound(NLig) To UBound(NLig)
If IsNumeric(NLig(A)) = True Then
If Rg Is Nothing Then
Set Rg = .Range("a" & NLig(A) & ":P" & NLig(A))
Else
Set Rg = Union(Rg, .Range("a" & NLig(A) & ":P" & NLig(A)))
End If
End If
Next
End With

'Copie la plage
Rg.Copy Dest

'Effacer les données de la plage source H à P inclusivement
For Each are In Rg.Areas
Set Rg1 = are.Offset(, 7).Resize(Rg.Rows.Count, Rg.Columns.Count -
7).SpecialCells(xlCellTypeConstants, 23)
Rg1.ClearContents
Next

'Libère la mémoire
Set Rg = Nothing: Set Rg1 = Nothing: Set Dest = Nothing

End Sub

MERCI
.

1 réponse

Avatar
FxM
Bonjour,

(non testé) remplace:
Rg.Copy Dest

par

Rg.Copy
Dest.PasteSpecial xlPasteValues

@+
FxM



Srogeau a écrit:

bonjour
code de denismichon (transferer des lignes)
le code ci-dessous (code de denismichon (transferer des lignes) me transfere
les lignes demandees, d'une feuill (chaleur) vers une autre feuill (histo) .
Est ce possible qu'au niveau du transfere il importe uniquement les donnees
inscrites dans la feuille (chaleur) c'est a dire sans les formules .par contre
il garde les autres actions d'effacement de donnees transferees
sans cette modif ,les donnees tranferees ne sont pas exactes car les formules
modifient le resultat sur la feuille qui recoit le transfer
j'espere que ma demande est suffisamment explicite
Sub Transferer_Lignes()

Dim NoLignes As Variant, NLig As Variant
Dim Rg As Range, Rg1 As Range, A As Long
Dim Dest As Range

'Les Numéros de lignes à transférer
NoLignes = Application.InputBox("Vos numéros de lignes." & _
"Syntaxe : 1-5-10", "Transfert de lignes", , , , , , 2)

If NoLignes = "Faux" Then Exit Sub

'Détermine où copier les données
With Worksheets("histo")
If .Range("A1") = "" Then
Set Dest = .Range("A1")
Else
Set Dest = .Range("A" & .Range("a65536").End(xlUp)(2).Row)
End If
End With

NLig = Split(NoLignes, "-")

'Identifie la plage à copier
With Worksheets("chaleur")
For A = LBound(NLig) To UBound(NLig)
If IsNumeric(NLig(A)) = True Then
If Rg Is Nothing Then
Set Rg = .Range("a" & NLig(A) & ":P" & NLig(A))
Else
Set Rg = Union(Rg, .Range("a" & NLig(A) & ":P" & NLig(A)))
End If
End If
Next
End With

'Copie la plage
Rg.Copy Dest

'Effacer les données de la plage source H à P inclusivement
For Each are In Rg.Areas
Set Rg1 = are.Offset(, 7).Resize(Rg.Rows.Count, Rg.Columns.Count -
7).SpecialCells(xlCellTypeConstants, 23)
Rg1.ClearContents
Next

'Libère la mémoire
Set Rg = Nothing: Set Rg1 = Nothing: Set Dest = Nothing

End Sub

MERCI
..