[règlé]Calcul Manuel et auto Vba

David

XLDnaute Occasionnel
Bonjour à tous,

J'ai un petit problème avec un For
Code:
            Der_lign = Range("B65536").End(xlUp).Row
            'Application.Calculation = xlCalculationManual
            For x = 6 To Der_lign
                Set PlageDeRecherche = ActiveSheet.Columns(22)
                Set Trouve = PlageDeRecherche.Cells.Find(what:="validé", LookAt:=xlWhole, LookIn:=xlValues)
                                If Not Trouve Is Nothing Then
                                    
                                        AdresseTrouvee = Trouve.Address
                                        Lignenageuse = Range(AdresseTrouvee).Row
                                        Range("B" & Lignenageuse & ":L" & Lignenageuse) = ""
                                        Range("N" & Lignenageuse & ":N" & Lignenageuse) = ""

                                End If
            
            Next
            'Application.Calculation = xlCalculationAutomatic
c'est pour effacer les lignes, à chaque ligne vidée (j'ai fait clearcontent aussi, c'est pareil), excel recalcul la page et comme elle est un peu lourde ça met un temps infini, je me suis dit que j'allais désactiver le calcul auto et le réactiver juste après la boucle, sauf que du coup mon for ne marche plus, il voit la première ligne contenant "validé" et même s'il boucle sur le reste jusqu'à Der_ligne ça n'efface plus le contenu comme si il ne voyait pas validé.

Une idée?

Merci
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Calcul Manuel et auto Vba

Bonjour David

Peut être plutot comme ça:
VB:
Sub test()
Application.Calculation = xlCalculationManual
With ActiveSheet
    Der_lign = .Range("B65536").End(xlUp).Row
    For x = 6 To Der_lign
        If .Range("V" & x).Value = "validé" Then
            .Range("B" & x & ":L" & x) = ""
            .Range("N" & x) = ""
        End If
    Next
End With
Application.Calculation = xlCalculationAutomatic
End Sub

Cordialement
 

Efgé

XLDnaute Barbatruc
Re : Calcul Manuel et auto Vba

Re
On peux résumer :
VB:
Sub test_2()
Application.Calculation = xlCalculationManual
With ActiveSheet
    For x = 6 To .Range("B65536").End(xlUp).Row
        If .Range("V" & x).Value = "validé" Then .Range("B" & x & ":L" & x & ",N" & x) = ""
    Next
End With
Application.Calculation = xlCalculationAutomatic
End Sub

Cordialement

EDIT
Bonjour Pierre jean
 

pierrejean

XLDnaute Barbatruc
Re : Calcul Manuel et auto Vba

Bonjour David

Voila comment je l’écrirais (mais le pb n'est surement pas résolu pour autant : teste et revient avec un fichier exemple si cela ne fonctionne pas)

Code:
Sub test()
Der_lign = Range("B" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For x = 6 To Der_lign
  If Cells(x, 22) = "validé" Then
    Range("B" & x & ":L" & x) = ""
    Range("N" & x & ":N" & x) = ""
  End If
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Edit : Salut Efgé
 

David

XLDnaute Occasionnel
Re : Calcul Manuel et auto Vba

Merci aussi pierrejean, la soluce de Efgé marche très bien. Je focalise trop sur .find alors qu'un for est plus simple, à la fin je mélange même les 2 ce qui la plupart du temps ne sert pas à grand chose, mais je m'en aperçois que plus tard quand je suis reposé et que je n'ai pas passé une heure à ne pas trouvé le problème!! xD

les Application.ScreenUpdating sont déja plus haut dans mon code et plus bas.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali