[Catégorie modifiée VB6 --> VBA] Sélectionner plusieurs cellules variables celon

cs_Sissi123 Messages postés 1 Date d'inscription lundi 9 août 2010 Statut Membre Dernière intervention 9 août 2010 - 9 août 2010 à 17:03
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 25 août 2010 à 14:14
Bonjour,

Je viens de récupérer un code en VBA et étant novice cela se complique un peu pour moi...

Je dispose d'une feuille indiquant un nombre d'heures par tâches(lignes) et par dates : jj/mm/aaaa (colonnes)

Sur une deuxième feuille, l'utilisateur choisi le mois qu'il souhaite voir en synthèse en indiquant la date du premier jour du mois (jj/mm/aaaa).

J'aimerai pouvoir calculer la somme sur le mois sélectionné. Mon problème est que je n'arrive pas à arrêter ma sélection juste pour un seul mois. Je n'arrive qu'à sélectionner l'ensemble...

Le code dont je dispose est :

wsh.Activate
While token2 = False
'SI Mois et année de la feuille1 = feuille2
If Month(wsh.Cells(2, y)) Month(wsb.Cells(2, 4)) And Year(wsb.Cells(2, 4)) Year(wsh.Cells(2, y)) Then

token2 = True
wsh.Cells(1, y).Select
t = ActiveCell.Column
Selection.End(xlToRight).Select
z = ActiveCell.Column

Else
wsh.Cells(1, y).Select
Selection.End(xlToRight).Select
y = ActiveCell.Column + 1
End If
Wend

Merci beaucoup pour toutes pistes :)

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
25 août 2010 à 14:14
Bonjour,
Pardon pour cette réponse un peu tardive...

Bon.; en admettant que vos données (dates) soient triées dans l'ordre, je propose de parcourir la feuille jusqu'à trouver où se situe la première puis la dernière des dates du mois demandé et enfin de faire la selelction de la plage de cellule.

Pour ce faire, voici le code que je propose:


Sub test()
Dim Mois_demande As Integer
    Mois_demande = 8 'exemple pour AOUT
    
'Initialisation des variables pour les coordonnées
Dim Prem_Ligne  As Integer
    Prem_Ligne = 0
Dim dernier_Ligne As Integer
    dernier_Ligne = 0
'-------------------------------------------------------------
'Dernière ligne de la feuille excel...
Dim DernL As Integer
    DernL = 50
'-------------------------------------------------------------
'boucle pour parcourir les lignes (dans la colonne 1)
'recherche pour chaque cellule le Mois
' (dates sous la forme dd/mm/yyyy )
' Indique la premiere ligne et la derniere ligne du mois demandé
For I = 1 To DernL
    valeur_cell = Cells(I, 1).Value
    Mois = Mid(valeur_cell, 4, 2) * 1
    If Mois Mois_demande And Prem_Ligne 0 Then
        Prem_Ligne = I
    End If
    If Mois > Mois_demande Then
        Dern_Ligne = I - 1
        Exit For
    End If
Next
'-------------------------------------------------------------
' Affichage dans la fenêtre d'execution de l'éditeur de macro
Debug.Print "Premiere ligne = " & Prem_Ligne
Debug.Print "Derniere ligne = " & Dern_Ligne
'-------------------------------------------------------------

' Selection de la plage
Range(Cells(Prem_Ligne, 1), Cells(Dern_Ligne, 1)).Select

End Sub



Reste à l'adapter à vos besoins...

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
Rejoignez-nous