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

J

JJ

Guest
Bonjour à tous,
Dans une macro j'ai plusieurs boucles qui se suivent de forme:

Sheets('Feuil1').Select
A = Feuil1.Range('F1000').End(xlUp).row
For x = A To 1 Step -1
If Feuil1.Cells(x,4).Value='toto' And .......Then
action
Else
If Feuil1.Cells(,4).Value='titi' And.........Then
autre action
End If
Next
Sheets('Feuil1').Select
B = Feuil1.Range('F1000').End(xlUp).row
For x = B To 1 Step -1
If Feuil1.Cells(x,4).Value='tata' .......Then
action
Else
If Feuil1.Cells(,4).Value='tutu'.........Then
autre action
End If
Next
etc..

Puis je regrouper mes boucles car il y en a 8 à la suite?

Comment se fait il que ce fichier Excel vide (sans les données, que la macro) avec cette macro 'pèse' près de 4Mo alors que le même fichier vide avec une plus petite macro pèse 400 Ko, l'écart est énorme !!!
Bonne soirée
JJ
 
Salut JJ,

Lorsque tu as beaucoup de condition, il vaut mieux utiliser un Select Case plutot que des If ... Then. Le Select Case permet de ne pas tester toutes les occurences, et gagne donc du temps. Donc je verrais bien ton code modifier ainsi :
Code:
Sub test()
Dim x%

Sheets('Feuil1').Select
For x = Feuil1.Range('F1000').End(xlUp).Row To 1 Step -1
    Select Case Cells(x, 4).Value
    Case 'toto', 'aa' 'si tu as plusieurs conditions
        'action
    Case 'titi'
        'autre action
    Case 'tata'
        'action
    Case 'tutu'
        'autre action
    '...
    End Select
Next
End Sub

@+
 
Re,
je m' aperçois que je ne peux pas utiliser ta fonction, car mon test porte sur 2 cellules à chaque fois:

If Feuil1.Cells(x,4).Value = 'toto And Feuil1.Cells(x,6).Value = 4 Then....
action
Else
etc...

Comme tu fais un select case x,4 ca ne peut pas fonctionner avec x,6?
Bonne soirée
 
Bonsoir JJ, Porcinet 82, 🙂

Il ya pas mal de phénomènes connus, mais pas forcément visibles 🙂

Le mieux sinon est de tenter une approche empirique, je ne pense pas que sur un fichier avec un code non activé la différence entre IF et select fasse l'écart.. Faudrait que Porcinet nous teste son fichier avant-après.
Donc JJ ouvres un fichier vierge, sauves le, copie ta macro colle là dans ton nouveau fichier sans lancer et sauve sous un nom-2. compare les poids, ça te donnera une piste.
Sinon pour faire joujou, prend un fichier vierge, A1 selectionné, sauves le, colle cette macro dans un module :
Sub brico()
Dim i As Integer

Application.Visible = False
For i = 1 To 10000
Cells(i, 1).Select
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Next i
Application.Visible = True
End Sub


sauves le nom-2 sans rien lancer,

curseur an A1, lances ta macro, puis sauve Nom-3... Compares les poids :silly:
ta feuille est toujours vierge, 🙂 , fait Page-fin et Page-home sur le nom-1 et le nom-3...

Pour finir, si dans ton code, sinon tu as des USF riches en goodies etc... ça pèse proportionnellement pas mal... Plus d'autres pistes du genre 😉

Bonne soirée,
 
Bonsoir,

Tout d'abord & nbsp est une erreur qui apparait quelque fois dans les codes lorsque l'on post, mais il ne faut pas en tenir compte, tu les vires sinon tu risque d'avoir des erreurs.

Le Dim x% est équivalent à Dim x as Integer mais comme je suis un peu (même tres) fainéant, dès que je peux éviter d'écrire, je le fais.

Pour tes proba, je garde le fil au cas ou je n'arriverai pas a dormir un de ces soirs 😉. Mais je vois que certains sont très calé niveau maths. Pour moi, les probas date de 1ère et Term S et de mon DUT STID, alors...

Voili, voilou ,

@+
 
Salut JJ
bonsoir le fil
tu peux peut être passer par une variable
qui reprendrait les deux valeurs ex

maVar= Feuil1.Cells(x,4).Value & '' & Feuil1.Cells(x,6).Value
dont tu aurais par exemple Toto4,Titi6 etc
et ensuite tu fais
Select Case maVar
case is = Toto4
----
case is = Titi6
----
end Select
bonne fin de Soirée
 
Bonsoir et merci à tous,
je vais essayer demain de recopier la maco dans un fichier vierge, je vous dis demain soir.
Par contre je n'ai pas bien compris le code de ChTi160?

ps: c'est quoi des USF ? je n'ai qu'une macro longue mais simple (elle utilise les memes codes que la macro dans le fichier 'léger' mais beaucoup lus longue en nombre de lignes Dim, If, Next.....)

Bonne soirée
JJ
 
re,

un USF c'est un Userform et pour reprendre ce que dit l'aide Excel (disponible via F1) : Un objet UserForm est une fenêtre ou une boîte de dialogue entrant dans la composition d'une interface utilisateur.

Pour le code de l'ami Jean-marie, c'est à ca que je pensait également pour essayer de garder les Select Case. En fait pour essayer de donner quelques brèves explications supplémentaires, il s'agit de créer une seule variable reprenant tes 2 conditions. Donc ce qui donnerai un code similaire à celui de Jean-Marie.
En fait, je m'apercoi que ce n'est pas évident à de développer plus en détails ce qui a deja été dit.

Tiens nous au courant.

@+
 
Salut tout le monde

Juste un complément pour dire que & n b s p ;  est du langage HTML et correspond à un espace insécable, c'est donc la page du forum qui crée cette erreur

Ya'v

Message édité par: ya_v_ka, à: 23/06/2006 02:40
 
Bonsoir

Effectivement, j'ai copié mes macros dans une nouvelle feuille Excel: 35Ko au lieu de 4Mo !!!

Explication: j'ai trouvé!

Vous avez un fichier Excel avec une macro.(=35Ko)
Vous remplissez de données votre feuille Excel et lancez la macro, résultat...etc...
puis vous quittez.
Au lieu de quitter sans sauvegarder (pour conserver le fichier vierge) vous sauvegardez!
Alors tout simplement vous selectionnez la feuille entière et Supr pour effacer les données et vous sauvegardez.....resultat le fichier (donc vide)=4Mo

Si vous y comprenez qquechose ???
Bonne soirée
JJ
 
Bonsoir tout le monde, 🙂

Vous y comprenez quelque chose ?

réponse = Oui 🙂 disons que c'est logique par rapport au comportement d'Excel tel qu'on le connaît

JJ as-tu fait le petit jeu (exercice) avec la macro en bleu que j'avais joint :whistle: . Plus encore les phénomènes induits peuvent t'amener de belles surprises avec l'utilisation de certaines propriétés 🙂 , une fois la macro exécutée tapes :

Activesheet.UsedRange.select

dans la fenêtre d'exécution ou dans une autre sub si tu veux et vois le résultat :silly:

Ceci amène aussi à montrer que la dernière cellule de... n'est pas toujours celle que l'on pense et explique les commandes à première vue tarabiscotées que les habitués utilisent pas que pour faire beau... 😉

Bonne soirée,
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
480
Réponses
2
Affichages
347
Réponses
2
Affichages
154
Réponses
5
Affichages
409
Réponses
8
Affichages
244
Réponses
8
Affichages
614
Retour