Problème macro excel
Fermé
Davidounet23
-
11 janv. 2010 à 13:50
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 11 janv. 2010 à 15:05
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 11 janv. 2010 à 15:05
A voir également:
- Problème macro excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
4 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
11 janv. 2010 à 13:55
11 janv. 2010 à 13:55
Bonjour,
Si on pouvait avoir le ou les messages d'erreur (en passant en mode débogage la ligne en erreur est surlignée en jaune), on pourrait peut être te venir en aide.
Merci
Si on pouvait avoir le ou les messages d'erreur (en passant en mode débogage la ligne en erreur est surlignée en jaune), on pourrait peut être te venir en aide.
Merci
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
11 janv. 2010 à 14:03
11 janv. 2010 à 14:03
Bonjour,
Salut Polux,
Oui, les lignes qui "plantent" nous seraient grandement utiles. Ou à défaut une description de ta bdd et ce que tu souhaites que fasse la macro.
Salut Polux,
Oui, les lignes qui "plantent" nous seraient grandement utiles. Ou à défaut une description de ta bdd et ce que tu souhaites que fasse la macro.
Bernard Rey
Messages postés
565
Date d'inscription
samedi 2 janvier 2010
Statut
Contributeur
Dernière intervention
31 décembre 2010
219
11 janv. 2010 à 14:23
11 janv. 2010 à 14:23
Difficile en effet de donner une réponse avec aussi peu de précisions. On peut toutefois (après quelques essais) noter que rien ne ramène le curseur en début de plage (sur "A2") après l'instruction Next date_anal. Il serait donc peut-être judicieux de placer l'instruction Sheets("Feuil1").Select Range("A2").Select juste après la ligne For date_anal = deb_int To fin_int (au lieu de juste avant) pour éviter que la macro ne "descende" à chacune des boucles.
Au passage, tu pourrais d'ailleurs l'écrire Sheets("Feuil1").Range("A2").Select
D'ailleurs, tu peux probablement t'économiser quelques autres .Select qui ralentissent l'exécution sans intérêt évident. Par exemple en remplaçant ça :
ActiveCell.Offset(0, 4).Select
ent = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
sor = ActiveCell.Value
ActiveCell.Offset(1, -5).Select
par ça :
ent = ActiveCell.Offset(0, 4).Value
sor = ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(1, 0).Select
(pour faire très vite, car on pourrait encore optimiser ça différemment) tu obtiendrais le même résultat.
Au passage, tu pourrais d'ailleurs l'écrire Sheets("Feuil1").Range("A2").Select
D'ailleurs, tu peux probablement t'économiser quelques autres .Select qui ralentissent l'exécution sans intérêt évident. Par exemple en remplaçant ça :
ActiveCell.Offset(0, 4).Select
ent = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
sor = ActiveCell.Value
ActiveCell.Offset(1, -5).Select
par ça :
ent = ActiveCell.Offset(0, 4).Value
sor = ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(1, 0).Select
(pour faire très vite, car on pourrait encore optimiser ça différemment) tu obtiendrais le même résultat.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
11 janv. 2010 à 15:05
11 janv. 2010 à 15:05
Bonjour à tous,,
offset(1,-5) sort de la feuille "inférieur" à colonne A
Une instruction est incalculable
date_max= max
max de quoi? peut-être sor ?
mess a des petites fautes de syntaxe
proposition de code:
Procédure non testée...
offset(1,-5) sort de la feuille "inférieur" à colonne A
Une instruction est incalculable
date_max= max
max de quoi? peut-être sor ?
mess a des petites fautes de syntaxe
proposition de code:
Sub anal() Dim deb_int As Long, fin_int As Long, ent As Long, sor As Long, date_anal As Long, date_max As Long Dim cpt_pers As Byte, cptr_max As Byte deb_int = 39006 fin_int = 40184 With Sheets("Feuil1") For date_anal = deb_int To fin_int For j = 2 To 172 sor = .Cells(j, 2) ent = .Cells(j, 5) If ent <= date_anal And sor >= date_anal Then cpt_pers = cpt_pers + 1 End If Next If cpt_pers <= cpt_max Then cpt_max = cpt_pers date_max = Max ' ??? End If Next End With mess = "nombre maximum " & cpt_max & " au " & Format(date_max, "dd/mm/yy") style1 = vbYes titre1 = "resultat de l'anal" MsgBox mess, style1, titre1 End Sub
Procédure non testée...