Optimisation de macro

Résolu/Fermé
pyrus2047 Messages postés 153 Date d'inscription lundi 3 juillet 2017 Statut Membre Dernière intervention 22 mai 2023 - 24 déc. 2017 à 22:07
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 26 déc. 2017 à 10:52
Sub ouest()
i = 0
date1 = Range("A1").Value
Do While date1 <= Range("A39").Value
If Weekday(date1) = 2 Then
i = i + 1
End If
date1 = date1 + 1
Range ("B1:B39") & DateDiff("ww", DateSerial(Year(date1), 1, 1), date1) + 1
Loop
End Sub

Bonjour,
si vous pouviez m'aider a corriger ma macro
dans la plage A1:A39 j'ai une liste de date don je souhaite récupéré dans la plage B1:B39
uniquement pour les lundi le n°de la semaine
merci



A voir également:

3 réponses

jordane45 Messages postés 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 4 704
25 déc. 2017 à 00:54
Bonjour,
Un truc du genre :
Sub ouest()

    Dim plageDate As Range
    Dim wkb As Workbook
    Dim sh As Worksheet
    Dim R As Integer
    Dim C As Range
    
    Set wkb = ThisWorkbook
    Set sh = wkb.ActiveSheet
    Set plageDate = sh.Range("A1:A39")


    For Each C In plageDate
        If Weekday(C.Value) = 2 Then
            R = C.Row
            sh.Cells(R, 2).Value = CInt(Format(C.Value, "ww", 2))
        End If
    Next

End Sub


2
pyrus2047 Messages postés 153 Date d'inscription lundi 3 juillet 2017 Statut Membre Dernière intervention 22 mai 2023
Modifié le 25 déc. 2017 à 20:43
Re
merci beaucoup
j'ai un autre dysfonctionnement avec cette macro
Private Sub Worksheet_Change(ByVal Target As Range)

Dim numéro As Integer
Dim celluletrouvee As Range
Dim ligne As Integer
Dim col As Integer

numéro = Range("T1")
Set celluletrouvee = Range("L2:L10").Find(numéro)
ligne = celluletrouvee.Row
col = celluletrouvee.Column
celluletrouvee.Select
ActiveWindow.ScrollRow = Selection.Row
End Sub


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).

Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
Jordane45

Merci
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 551 > pyrus2047 Messages postés 153 Date d'inscription lundi 3 juillet 2017 Statut Membre Dernière intervention 22 mai 2023
25 déc. 2017 à 18:59
bonsoir, peux-tu marquer cette discussion comme résolue?
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié le 25 déc. 2017 à 16:23
Bonjour,

Pour éviter les problèmes, tu devrais t'inspirer très largement de la façon, dont Jordane écrit ses macros :
- Pas de Select inutile
- Pas de Range non référencé (i.e Range("T1") oui mais de quelle feuille ?)
- Pas de valeur explicite (i.e au lieu de Range("T1") écrire Range("T1").Value)
- Ne pas utiliser Selection
- ....
0
jordane45 Messages postés 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 4 704
25 déc. 2017 à 19:04
De plus... Tu ne nous dit pas quel est le souci...

Nb: ne mets pas de caractères accentués dans le nom de tes variables
0
pyrus2047 Messages postés 153 Date d'inscription lundi 3 juillet 2017 Statut Membre Dernière intervention 22 mai 2023
25 déc. 2017 à 19:22
re
j'ai en T1 une liste déroulante de numéro 1,2,3,4........
en colonne L j'ai une suite de numéro identique a la liste déroulante
je souhaite qu'a la selection d'un numéro dans la liste déroulant
on le recherche dans la colonne L et que la ligne ou il se trouve remonte en haut
de la feuille
j 'ai toujours cette ligne qui pose problème

ligne = celluletrouvee.Row

Cordialement
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
25 déc. 2017 à 19:51
Tu pose en dictat que la ligne est systématiquement trouvée !
Et si ce n'est pas le cas ???? (If celluletrouvee is Nothing then ... )
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 551
Modifié le 26 déc. 2017 à 10:54
quand tu écris "j 'ai toujours cette ligne qui pose problème", reçois-tu un message d'erreur?
lequel?
suggestion:
Dim numero As Integer
Dim celluletrouvee As Range

numero = Range("T1")
Set celluletrouvee = Range("L2:L10").Find(numero)
If not (celluletrouvee is Nothing) then
    ActiveWindow.ScrollRow = celluletrouvee.Row
end if
0