Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Optimiser Formule

  • Initiateur de la discussion Initiateur de la discussion stagiaire
  • 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 !

stagiaire

XLDnaute Nouveau
Bien le bonjour!

Grace a l'aide du forum et notamment de "suistrop", on a établit une application excel qui trie les lignes qui ont quelques chose d'écrit sur un planning de 1 moi! le but étant de trier les materiel loué et les afficher clairement dans un autre onglets.

La macro permet verifier si il y a un mot sur la partie planning de 1 moi et classe celui ci comme loué dans l'onglet correspondant, malheureusement l'importance du materiel qu'il est possible de loué ( environ 200 ligne) croisé avec les 30 jours de planning font que lorsque que la macro est activé Excel se bloque durant 5 a 6 min!

Donc y a t'il un moyen d'ameliorer la formule afin de diminuer le temps de tri ?

PS : j'aimerais aussi connaitre une ligne de code qui supprime les commentaire, a inséré dans ma formule qui efface le planning !

Code:
Sub cartman()


'variable poru savoir sur quel ligne de la feuille 2 on copie
j = 2
'on va regarder ligne par ligne si y a des mots si on trouve un mot dans la phase location on va copier la ligne dans la feuille 2
Sheets("planning").Select
For i = 2 To 200
'ici par défaut on dit y a pas de mot en mettant mot = false
mot = False
    'colonne 8 a 18
    For y = 8 To 41
        'on regarde si la ligne contient un mot entre la colonne 8 et 18 si oui mot = true
        Sheets("planning").Select
        If Cells(i, y) <> 0 Then
            mot = True
        End If
    Next y
    'si il y a 1 mot dans la ligne i alors mot = true
    If mot = True Then
        Sheets("planning").Select
        Rows(i).Select
        Selection.Copy
        Sheets("loué").Select
        Rows(j).Select
        ActiveSheet.Paste
        'on augmente j pour passer a la ligne suivant quand on copiera la prochaine ligne
        j = j + 1
    End If
Next i
End Sub
 

Pièces jointes

Re : Optimiser Formule

Bonjour

tu peux deja remplacer ces lignes
Code:
        Sheets("planning").Select
        Rows(i).Select
        Selection.Copy
        Sheets("loué").Select
        Rows(j).Select
        ActiveSheet.Paste

par :
Code:
     Sheets("planning").rows(i).copy destination:=Sheets("loué").range("A" & j)

ce qui evitera les select, donc les passages de feuille à feuille
 
Re : Optimiser Formule



en rajoutant Application.ScreenUpdating ca accelere un peu le code!!!
(Moi dans mon stage ma plus grosse macro tourne pendant 25 minutes .... )
T'imagine meme pas comment je priais a chaque fois que je l'executais .... pour que ca sorte les bon résultats !!!
 
Re : Optimiser Formule

Bonjour Stagiaire, suistrop, Wilfried🙂

Stagiaire, pour répondre à ton ps, une boucle qui supprime tous les commentaires présents sur une feuille :

Code:
Dim c As Comment
For Each c In Feuil1.Comments
    c.Delete
Next c

bon après midi
@+
 
Re : Optimiser Formule

Saluch wilfield, pierrot et "suistrop"

Le post precedent a disparu suistrop alors au moins maintenant le titre du post correspond au post 😛

Donc merci wilfried pour le raccourci formule et surtout "suistrop", qui comme a son habitude trouve se qui faut ^_^, la ligne de code en plus permet a la macro de s'exécuter en a peu près 30s ! 😱

Pierrot la macro que j'avais enregistrer se presente ainsi :

Code:
 Sub delete()

    Range("I2:AO200").Select
    Selection.Interior.ColorIndex = xlNone
    Selection.ClearContents
  
End Sub

j'ai du mal a intégré ton code, sa me met un msg d'erreur quand je l'intègre, il semblerait que se soit le terme "dim" qui est du mal a se mélanger !
msg d'erreur : "déclaration existante dans la portée en cour"

PS: j'intègre des boutons sur les feuille d'origine, du coup lors du tri ou des copie, il se copie aussi avec leur formule lié... peut-on rajouter une ligne pour ne pas copier les boutons !

Le problème essentiel est réglé alors MERCI MERCI MERCI !
J'espère que les exploitants vont être content... à moins qu'il me demande de tout re-modifié ^_^

Bonne après midi mes petits !
 
Dernière édition:
Re : Optimiser Formule

Re,

le code donné devrait fonctionner.... attention "feuil1" est le "codename" de la feuille, pour utiliser son nom, modifies comme suit :

Code:
Dim c As Comment
For Each c In Sheets("NomDeLaFeuille").Comments
    c.Delete
Next c

la déclaration de la variable C (Dim c as Comment) ne devrait pas gener, bien au contraire, sauf si tu utilises déjà dans ton code une variable avec ce même nom, ce qui a l'air d'être le cas, remplaces par un autre nom.

@+
 
Re : Optimiser Formule

Re

Merci pierre en faite je devais juste le mettre a la suite tout bêtement, j'avaais essayer de l'intercaler entre 2 lignes donc tout va bien !

pour finir Les bouton avec leur formule se copie en même temps que toutes les donnée alors il existe une ligne de code qui permet de ne pas copier les bouton que j'ai implanter sur la 1ere feuille?

edit :Le problème est résolu, le bouton est considéré comme une image du coup on peu spécifier de ne pas le déplacer/copier avec la cellule !

PERFECTOSSSSS
Voili voilou merci mes petits je vous adore ^_^
 
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
8
Affichages
315
Réponses
3
Affichages
285
Réponses
10
Affichages
581
Réponses
5
Affichages
781
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…