XL 2016 Nettoyage et extension macro

  • Initiateur de la discussion Initiateur de la discussion Fat
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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" &...
Bonjour Fat, le forum

VB:
lig = Sheets("CTS").Range("G" & Rows.Count).End(xlUp).Row + 1
en première lecture, bug si ton bouton n'est pas dans la feuille CTS car ton rows.count se réfère à la feuille active.
et si il l'est, pas besoin de préciser la feuille
Code:
lig = Range("G" & Rows.Count).End(xlUp).Row + 1
en codant un trableau, ça ira plus vite, je regarde !

@+
 
re,
pas de fichier pour tester (et ce n'est pas à moi de le créer) mais cela devrait le faire un peu plus rapidement et sans tableau [ et avec un code un peu plus court ]

Code:
Private Sub CommandButton2_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
lig = Range("G" & Rows.Count).End(xlUp).Row + 1
With Sheets("SAI")
    Range("A" & lig & ":V" & lig + .Range("G" & .Rows.Count).End(xlUp).Row - 11).Value = .Range("A11:V" & .Range("G" & .Rows.Count).End(xlUp).Row).Value
    .Range("G12:V999").ClearContents
End With
Application.Calculation = xlCalculationAutomatic
End Sub
 
Dernière édition:
re,
pas de fichier pour tester mais cela devrait le faire un peu plus rapidement et sans tableau

Code:
Sub test()
If Range("A11").Value = "" Then
    MsgBox "Manque ETAT de la Saisie", vbCritical, "ATTENTION"
    Exit Sub
End If

Dim lig As Long
Application.Calculation = xlCalculationManual
lig = Range("G" & Rows.Count).End(xlUp).Row + 1
With Sheets("SAI")
    Range("A" & lig & ":V" & lig + .Range("G" & .Rows.Count).End(xlUp).Row - 11).Value = .Range("A11:V" & .Range("G" & .Rows.Count).End(xlUp).Row).Value
    .Range("G12:V999").ClearContents
End With
Application.Calculation = xlCalculationAutomatic
End Sub
Bonsoir l’ambiance !
La macro et le bouton2 sont dans la feuille SAI pour déplacer des lignes vers la feuille CTS.
- Et quoi faire pour effacer la cellule H5 de la feuille SAI ?
J’aime bien votre bonne humeur.
Passez une bonne soirée.
Cordialement
Fat
 
La macro et le bouton2 sont dans la feuille SAI
ben ça change tout, voila le code modifié en ce sens mais pas testé (d'où l'intérêt d'un fichier test)
[en fait j'utilise quand même un tableau (de range)]
Code:
Private Sub CommandButton2_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
lig = Sheets("CTS").Range("G" & Sheets("CTS").Rows.Count).End(xlUp).Row + 1
Sheets("CTS").Range("A" & lig & ":V" & lig + Range("G" & Rows.Count).End(xlUp).Row - 11).Value = Range("A11:V" & Range("G" & .Rows.Count).End(xlUp).Row).Value
Range("G12:V999").ClearContents
Application.Calculation = xlCalculationAutomatic
[H5].ClearContents
End Sub
 
Dernière édition:
Bonjour à vous tous

@Fat je te propose ceci

VB:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim DerligSrc&, DerligDest&

With Worksheets("SAI")
    DerligSrc = .Range("P" & Rows.Count).End(xlUp).Row
    DerligDest = Worksheets("CTS").Range("P" & Rows.Count).End(xlUp).Row + 1

    .Range("A11:P" & DerligSrc).Copy Worksheets("CTS").Range("A" & DerligDest)
    .Range("F12:P" & DerligSrc).ClearContents
    .Range("H8").Select
End With
Application.CutCopyMode = False

End Sub
*Le fichier suit ....

Je n'ai pas le pack XLP

@Phil69970
 

Pièces jointes

Dernière édition:
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" & Rows.Count).End(xlUp).Row - 11).Value _
        = Range("A11:V" & Range("H" & Rows.Count).End(xlUp).Row).Value
End With
Range("G12:V999,H5").ClearContents
Application.Calculation = xlCalculationAutomatic
End Sub
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
361
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Réponses
35
Affichages
2 K
Réponses
16
Affichages
999
Réponses
3
Affichages
598
Réponses
2
Affichages
423
Réponses
2
Affichages
299
Retour