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 -
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
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
A voir également:
- VBA : rechercher une valeur non vide dans 1 colonne et recopier
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
6 réponses
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.
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.
bonjour,
Voici ton classeur avec 2 formules pour obtenir tes résultats :
https://www.cjoint.com/?BKzjPz6yyAW
Voici ton classeur avec 2 formules pour obtenir tes résultats :
https://www.cjoint.com/?BKzjPz6yyAW
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
Je vais essayer de calquer cette formule sur VBA car j'ai une dizaine de fichiers à chaque mois à gérer.
bon dimanche
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour à tous,
en vba, à mettre dans un module standard :
https://www.cjoint.com/?BKzkwmvEDr9
eric
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
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
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
Re,
C'est de ma faute, j'ai oublié un cas:
eric
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