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

Résolu/Fermé
Titusisa Messages postés 5 Date d'inscription samedi 24 novembre 2012 Statut Membre Dernière intervention 25 novembre 2012 - 24 nov. 2012 à 17:47
Titusisa Messages postés 5 Date d'inscription samedi 24 novembre 2012 Statut Membre Dernière intervention 25 novembre 2012 - 25 nov. 2012 à 14:15
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
24 nov. 2012 à 21:30
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 samedi 24 novembre 2012 Statut Membre Dernière intervention 25 novembre 2012
24 nov. 2012 à 22:57
https://www.cjoint.com/?3KywZJJtFhF
Merci d'avance. Voilà le fichier joint
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
25 nov. 2012 à 09:41
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 samedi 24 novembre 2012 Statut Membre Dernière intervention 25 novembre 2012
25 nov. 2012 à 09:58
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 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
25 nov. 2012 à 10:22
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 samedi 24 novembre 2012 Statut Membre Dernière intervention 25 novembre 2012
25 nov. 2012 à 12:04
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 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
25 nov. 2012 à 13:54
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 samedi 24 novembre 2012 Statut Membre Dernière intervention 25 novembre 2012
25 nov. 2012 à 14:15
c'est génial ça marche en 2 secondes
un grand MERCI
0