L'erreur classique 424 ^^
Résolu
Markoko
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
Markoko Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Markoko Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- L'erreur classique 424 ^^
- Windows 11 affichage classique - Guide
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
3 réponses
Bonjour
pourquoi
on a
Set f_report = wb.Worksheets("Forecast")
With Forecast ?????
Set myplage = .Range(.Cell(4, i), .Cell(7, i), .Cell(10, i))
End With
j'aurais plutôt écris ceci
mais il y a beaucoup d'autres choses à revoir....
pourquoi
on a
Set f_report = wb.Worksheets("Forecast")
With Forecast ?????
Set myplage = .Range(.Cell(4, i), .Cell(7, i), .Cell(10, i))
End With
j'aurais plutôt écris ceci
With f_report
'Rank#1
For i = 5 To 7
Minimum = Application.Min(.Cells(i, 4), .Cells(i, 7), .Cells(i, 10))
minimumadress = .Rows(i).Find(Minimum).Address
..... etc
mais il y a beaucoup d'autres choses à revoir....
Re,
«Mais les select j'en ai besoin, ...» : Non pas dans ton cas !!!
Et si tu les supprimes, le code n'en sera que plus simple, plus lisible et plus efficace.
Par exemple tu peux remplacer toutes les lignes suivantes :
Par une seule (sans Select)
«Mais les select j'en ai besoin, ...» : Non pas dans ton cas !!!
Et si tu les supprimes, le code n'en sera que plus simple, plus lisible et plus efficace.
Par exemple tu peux remplacer toutes les lignes suivantes :
Range(MinimumAddress).Cut Sheets("Template").Select Range("D" & i).Select ActiveSheet.Paste
Par une seule (sans Select)
f_report.Range(MinimumAddress).Cut Worksheets("Template").Range("D" & i)
re,
Si j'ai pigé, tu veux reproduire le tableau de forecaste dans template dans l'orde croissant des dates références (colonne 4,7,10)
si oui
sans select-selection copy ou cut-paste, grands mangeurs de RAM et de temps...
tu débutes: il est important pour chacun d'activer "option explicit" et de déclarer les variables
crois- moi, c'est plus qu'utile lorsque tu fais des essais : faute de frappe, mauvais choix de type etc, âneries que l'on sait tous très bien faire !
de m^me , indenter le code permet une lecture plus facile (penser a la maintenance ou évolution par toi ou une autre personne: 80% du temps de vie de l'appli)
Michel
Si j'ai pigé, tu veux reproduire le tableau de forecaste dans template dans l'orde croissant des dates références (colonne 4,7,10)
si oui
sans select-selection copy ou cut-paste, grands mangeurs de RAM et de temps...
tu débutes: il est important pour chacun d'activer "option explicit" et de déclarer les variables
crois- moi, c'est plus qu'utile lorsque tu fais des essais : faute de frappe, mauvais choix de type etc, âneries que l'on sait tous très bien faire !
de m^me , indenter le code permet une lecture plus facile (penser a la maintenance ou évolution par toi ou une autre personne: 80% du temps de vie de l'appli)
Option Explicit
'------
Sub markoko()
Dim Minimum As Double, Minimumadresse As String
Dim Tri As Byte, Col As Byte
Dim Tampon(2)
Dim Lig As Byte, Debut As String
Application.ScreenUpdating = False
For Lig = 5 To 7
With Sheets("forecast")
For Tri = 1 To 3
If .Cells(Lig, 4) <> "" Then
Minimum = CDbl(.Cells(Lig, 4))
Minimumadresse = .Cells(Lig, 4).Address
End If
For Col = 7 To 10 Step 3
If .Cells(Lig, Col) <> "" Then
If Minimum > CDbl(.Cells(Lig, Col)) Then
Minimum = CDbl(.Cells(Lig, Col))
Minimumadresse = .Cells(Lig, Col).Address
End If
End If
Next Col
Tampon(0) = .Range(Minimumadresse).Offset(0, -2)
Tampon(1) = .Range(Minimumadresse).Offset(0, -1)
Tampon(2) = .Range(Minimumadresse)
.Range(Minimumadresse & ":" & Range(Minimumadresse).Offset(0, -2).Address) = ""
With Sheets("template")
Debut = Choose(Tri, "B", "E", "H")
.Cells(Lig, Debut).Resize(1, 3) = Tampon
End With
Minimum = 99999
Next Tri
End With
Next Lig
Sheets("template").Activate
End Sub
Michel
C'est genial !!! Merci beaucoup ! Et à la fin du code il me reste plus qu'a ajouter un copier-coller pour récupérer les données triées sur le forecast. Je vous tiens au courant, en tout cas merci beaucoup car sans vous j'aurais encore un code un peu dégueu ^^ et en plus qui ne fonctionnerait pas bien.
bonjour,
Et à la fin du code il me reste plus qu'a ajouter un copier-coller pour récupérer les données triées sur le forecast
??? Comprend pas... sauf erreur de ma part ,les données de forecast sont écrites dans template
With Sheets("template")
Debut = Choose(Tri, "B", "E", "H")
.Cells(Lig, Debut).Resize(1, 3) = Tampon
End With
pour reporter des données, on évite au maximum d'utiliser "copier-coller"
Et à la fin du code il me reste plus qu'a ajouter un copier-coller pour récupérer les données triées sur le forecast
??? Comprend pas... sauf erreur de ma part ,les données de forecast sont écrites dans template
With Sheets("template")
Debut = Choose(Tri, "B", "E", "H")
.Cells(Lig, Debut).Resize(1, 3) = Tampon
End With
pour reporter des données, on évite au maximum d'utiliser "copier-coller"
C'est à dire que les données dans Forecast n'étaient pas encore triées, on utilise la feuille template pour les classer, puis après on les remets dans le forecast, comme ca on obtient une feuille forecast bien rangée.
J'ai réussi à le faire par un copier-coller c'est ce qui m'est apparu comme étant le plus simple. Mais comment faire autrement ?
Merci
J'ai réussi à le faire par un copier-coller c'est ce qui m'est apparu comme étant le plus simple. Mais comment faire autrement ?
Merci
en fait dans l'exemple que je vous ai montré c'est un petit tableau, mais en réalité c'est plus grand, il y a environ 400 lignes (du coup la variable Lig est une integer) et environ 16 dates à trier, mais ca fonctionne. Par-contre si on peut optimiser le "copier/coller" je serai intéressé de savoir comment :)
«mais il y a beaucoup d'autres choses à revoir.... » Entièrement d'accord !!!
@Markoko
Commencer par la suppression de tous les Select ...
Cordialement
Patrice
Mais les select j'en ai besoin, le code une fois qu'il a trouvé sur une ligne la plus petite date, il l'a copie sur autre feuille pour après la remettre sur la feuille forecast mais en 1ère position. Je pense que j'ai mal exprimer ce que je souhaite faire, voici un exemple :
On a 25/05/2014 12/03/2014 08/08/2014
On desire 12/03/2014 25/05/2014 08/08/2014
je n'avais pas pensé qu'il pouvait peut-^tre y avoir d'autres données dans les colonnes entre D et J mais je ne savais qu'il s'agissait de date (piège)
Option Explicit
'------