XL 2016 Nettoyage et extension macro

Fat

XLDnaute Nouveau
Bonsoir Le Forum,

- Cette macro gérée par le bouton2 fonctionne (message d'alerte si manque info et déplacement de lignes de feuille SAI vers feuille CTS) mais avec lenteur.
Le résultat n'est obtenu qu'après 3 à 4 secondes après validation.
Peut-on l'alléger ou mieux la réécrire ?
- Je souhaiterais aussi qu'elle puisse m'effacer la cellule H5
Que dois-je faire ? comment et à quel endroit ?
Merci pour votre assistance
Cordialement
Fat

Private Sub CommandButton2_Click() 'valider
If Range("A11").Value = "" Then
MsgBox "Manque ETAT de la Saisie", vbCritical, "ATTENTION"
Exit Sub
Else
End If

Dim lig As Long, col As Integer, x As Integer
lig = Sheets("CTS").Range("G" & Rows.Count).End(xlUp).Row + 1
' If Sheets("CTS").Range("TableauCTS").Item(7, 1) <> "" Then lig = Sheets("CTS").Range("TableauCTS").Rows.Count + 1 Else lig = 1
x = 11
Do While True
For col = 1 To 22
Sheets("CTS").Cells(lig, col).Value = Sheets("SAI").Cells(x, col).Value
Next
x = x + 1
If Len(Sheets("SAI").Cells(x, 7).Value) = 0 Then Exit Do
lig = lig + 1
Loop
Sheets("SAI").Range("G12:V999").ClearContents

End Sub
 
Solution
Cette macro gérée par le bouton2 fonctionne
lig = Sheets("CTS").Range("G" & Rows.Count).End(xlUp).Row + 1
il faudrait m'expliquer comment cette macro du post 1 a pu fonctionner avec une colonne G entièrement vide ! 😡
avec le fichier, ça va mieux ! même le bouton n'est pas le même, 2 dans le post 1, 1 dans le fichier

[édition: salut @Phil69970 ]
VB:
Private Sub CommandButton1_Click() 'valider
If Range("A11").Value = "" Then
    MsgBox "Manque ETAT de la Saisie", vbCritical, "ATTENTION"
    Exit Sub
End If

Dim lig As Long
Application.Calculation = xlCalculationManual
With Sheets("CTS")
    lig = .Range("H" & .Rows.Count).End(xlUp).Row + 1
    .Range("A" & lig & ":V" & lig + Range("H" &...

Fat

XLDnaute Nouveau
Bonsoir Le Forum,
Merci à vous tous pour votre contribution, j'y ai trouvé ce que je cherchais.
Juste une dernière question :
Quelle est la différence d'écriture de la macro pour transférer des lignes avec formules et sans formule.
Un exemple puisé de vos proposition me serait utile.
Merci encore et bonne soirée
Cordialement
Fat
 

Staple1600

XLDnaute Barbatruc
Bonsoir

Un exemple à tester sur une feuille vierge
VB:
Sub Pour_Créer_test()
[A1:H10] = "=20*(N(""Staple1600"")+ROW()*COLUMN())"
[A11] = 1: [A11:H11].DataSeries: [A11:H20].DataSeries
End Sub
Sub CopierAvecFormules()
 Columns("J:Q").ClearContents
[A1].CurrentRegion.Copy [J1]
End Sub
Sub CopierSansFormules()
t = [A1].CurrentRegion.Value2
Columns("J:Q").ClearContents
[J1].Resize(UBound(t, 1), UBound(t, 2)) = t
End Sub
Le nom des macros étant explicite, je n'en dis pas plus.
 

Discussions similaires

Statistiques des forums

Discussions
315 127
Messages
2 116 507
Membres
112 765
dernier inscrit
SIDIANW