bonjour,
Multiplier les posts sur le même sujet n'est pas le meilleur moyen pour te faire aider.
De plus d'un post à l'autre il ya des noms de feuilles qui change. Pas facile d'y comprendre quelque chose dans dans ta démarche.
D'autant que tes explications sont confuses... Tu mélanges feuilles et classeur dans tes explications, alors que visiblement tu as tout sur le même classeur.
La perte de temps n'est donc pas dans l'ouverture de classeurs mais dans les nombreuses boucles redondantes.
Enfin tous ces collages avec liens ne doivent pas accélérer le traitement !
Pour résumer ligne 12 à 15 pas fameux... Tu avais trouvé mieux avec :
Code :
- Do
- i = i + 1
- Loop Until (ComboBox3.Value = Range("A" & i).Value)
|
Ligne 18 et 33 : Quand on a une boucle, inutile d'en faire 2...
For j = 3 To 183
Ligne 38, 40 ces lignes me paraissent fort douteuses mais je les ai laissées.
Enfin supprimer tous les Select : ils ne servent à rien ce sont eux qui bouffent 50 % de ton temps, les autres 50 % sont pris par l'affichage à l'écran.
En commençant la macro par :
Application.ScreenUpdating = True
... ça devrait déjà bien améliorer le truc
Toutefois si tu tiens absolument à avoir un lien entre les 2 feuilles ce n'est pas un collage qu'il faut faire
Il suffit de créer le lien directement avec une formule du genre :
Code :
- For j = 3 To 183
- Sheets("Prod" ).Range("B" & k).Formula = "=" & Worksheets(j).Name & "!B" & i
- Next j
|
En résumé, (bien sur je n'ai pas pu tester) ça devrait donner :
Code :
- Private Sub CommandButton1_Click()
- Dim i%, j%, z$
- Application.ScreenUpdating = True
- If ComboBox3.Value <> "" Then
-
- Do
- i = i + 1
- Loop Until (ComboBox3.Value = Range("A" & i).Value)
-
- For j = 3 To 183
- z = Worksheets(j).Name
- Sheets("Prod" ).Range("B" & k).Formula = "=" & z & "!B" & i
- Sheets("Prod" ).Range("A" & k).Value = z
- Next j
-
- With Sheets("Prod" )
- .Range("A1" ).Value = ComboBox3.Value
- .Activate
- End With
-
- Unload Me
-
- Else
- MsgBox "Merci de choisir un produit"
- End If
- End Sub
|
...Si j'ai bien compris !
A+
Message édité par galopin01 le 07-08-2007 à 08:16:25