VBA : rechercher une valeur non vide dans 1 colonne et recopier

Résolu
Titusisa Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
Titusisa Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'aimerais avoir de l'aide pour programmer une macro sur VBA.
J'ai un fichier planning, avec en 1ère ligne les dates du mois, en colonne 1 les N° matricules, et ensuite les Heures travaillées s'il y a. Il y a donc des jours avec aucune valeur saisie, car aucune heure de travail (il s'agit de vacataires)
Je voudrais mettre en dernière colonne la 1ère date travaillée, et la dernière date travaillée du mois.
comment dois-je m'y prendre.
merci d'avance pour votre aide


6 réponses

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour,

Si tu pouvais nous mettre un exemple sans éléments personnels mais avec la structure des données sur https://www.cjoint.com/ puis nous mettre le lien généré ici ce serait plus facile.
0
Titusisa Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
https://www.cjoint.com/?3KywZJJtFhF
Merci d'avance. Voilà le fichier joint
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour,

Voici ton classeur avec 2 formules pour obtenir tes résultats :

https://www.cjoint.com/?BKzjPz6yyAW
0
Titusisa Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup, cela va bien me dépanner.
Je vais essayer de calquer cette formule sur VBA car j'ai une dizaine de fichiers à chaque mois à gérer.

bon dimanche
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour à tous,

en vba, à mettre dans un module standard :
Sub datesDebFin()
    Dim lig As Long, col1 As Long, col2 As Long
    Application.ScreenUpdating = False
    For lig = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        Cells(lig, 22).Resize(1, 2) = ""
        col1 = Cells(lig, 2).End(xlToRight).Column
        If col1 < 22 Then
            col2 = Cells(lig, 22).End(xlToLeft).Column
            Cells(lig, 22) = Cells(1, col1)
            Cells(lig, 23) = Cells(1, col2)
        End If
    Next lig
    Application.ScreenUpdating = True
End Sub 

https://www.cjoint.com/?BKzkwmvEDr9

eric
0
Titusisa Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
génial.
J'ai quand même une erreur. j'ai modifié pour que ça colle avec mes colonnes réelles, et je n'arrive pas à avoir la date début du 11/10 pour certains.
où est l'erreur de ma modif? pourrais tu regarder STP . peut-être dans cells. resize. Je ne sais pas ce que cela veut dire. Peux tu m'éclairer. C'est pour changer à chque fois?
https://www.cjoint.com/?3Kzmcr3SnKY
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Re,

C'est de ma faute, j'ai oublié un cas:
Sub datesDebFin()
    Dim lig As Long, col1 As Long, col2 As Long
    Application.ScreenUpdating = False
    For lig = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        Cells(lig, 25).Resize(1, 2) = ""
        If Cells(lig, 4) = "" Then
            col1 = Cells(lig, 3).End(xlToRight).Column
        Else
            col1 = 4
        End If
        If col1 < 25 Then
            col2 = Cells(lig, 25).End(xlToLeft).Column
            Cells(lig, 25) = Cells(1, col1)
            Cells(lig, 26) = Cells(1, col2)
        End If
    Next lig
    Application.ScreenUpdating = True
End Sub

eric
0
Titusisa Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
c'est génial ça marche en 2 secondes
un grand MERCI
0