VBA : rechercher une valeur non vide dans 1 colonne et recopier
Résolu
Titusisa
Messages postés
5
Statut
Membre
-
Titusisa Messages postés 5 Statut Membre -
Titusisa Messages postés 5 Statut Membre -
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
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
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