Déterminer nb de jours à partir de la première cellule non vide
Résolu
Aussie44
-
Aussie44 -
Aussie44 -
Bonjour,
Débutante en VBA, j'aurais grand besoin d'aide pour effectuer la tache suivante.
Je cherche à déterminer le nombre de jours entre 2 dates...pas trop difficile pour moi jusque là sauf que je souhaite déterminer ce nombre de jours à partir de la première cellule non vide et jusqu'à la dernière cellule non vide.
Pour faire simple, je joins un fichier excel avec 3 colonnes (la première est une colonne de dates et les 2 autres sont des colonnes de cellules vides et non vides).
J'aurai besoin 'identifier pour chaque colonne à partir de B (et reporter si possible cette information après la dernière ligne de la colonne considérée), la date (située en colonne A) de la première cellule non vide de la colonne B (à reporter en B3350) et la date de la dernière cellule non vide de la colonne B (à reporter en B3351). Idem pour C, date de début de la première cellule non vide (à reporter en C3350) et date de la dernière cellule non vide (à reporter en C3351).
Dans la réalité j'ai un fichier de plus de 7000 colonnes, il faudrait que je puisse incrémenter sur une plus grosse base de données que celle donnée dans l'exemple.
Un grand merci par avance de votre aide.
Débutante en VBA, j'aurais grand besoin d'aide pour effectuer la tache suivante.
Je cherche à déterminer le nombre de jours entre 2 dates...pas trop difficile pour moi jusque là sauf que je souhaite déterminer ce nombre de jours à partir de la première cellule non vide et jusqu'à la dernière cellule non vide.
Pour faire simple, je joins un fichier excel avec 3 colonnes (la première est une colonne de dates et les 2 autres sont des colonnes de cellules vides et non vides).
J'aurai besoin 'identifier pour chaque colonne à partir de B (et reporter si possible cette information après la dernière ligne de la colonne considérée), la date (située en colonne A) de la première cellule non vide de la colonne B (à reporter en B3350) et la date de la dernière cellule non vide de la colonne B (à reporter en B3351). Idem pour C, date de début de la première cellule non vide (à reporter en C3350) et date de la dernière cellule non vide (à reporter en C3351).
Dans la réalité j'ai un fichier de plus de 7000 colonnes, il faudrait que je puisse incrémenter sur une plus grosse base de données que celle donnée dans l'exemple.
Un grand merci par avance de votre aide.
A voir également:
- Déterminer nb de jours à partir de la première cellule non vide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Nombre de jours entre deux dates excel - Guide
- Compte facebook suspendu 180 jours - Guide
- Supprimer page word vide - Guide
- Formate pour taxer client frigo vide - Forum Loisirs / Divertissements
5 réponses
Bonjour,
adaptez les cellules de copie, le nombre de colonnes et la lgne de depart.
Bonne suite
adaptez les cellules de copie, le nombre de colonnes et la lgne de depart.
Sub Bouton1_Clic() Application.ScreenUpdating = False With Worksheets("feuil1") 'ligne de depart lig = 1 For x = 2 To 5 'premiere cellule non vide valcherch = "*" lig = .Columns(x).Find(valcherch, .Cells(lig, x), , xlPart).Row .Cells(36, x) = .Cells(lig, "A") 'derniere cellule non vide valcherch = "" lig = .Columns(x).Find(valcherch, .Cells(lig, x), , xlPart).Row - 1 .Cells(37, x) = .Cells(lig, "A") Next x End With Application.ScreenUpdating = True End Sub
Bonne suite
Re,
Sub Bouton1_Clic()
Dim plage As Range
Application.ScreenUpdating = False
With Worksheets("feuil1")
'derniere cellules non vide colonne A
lig = Range("A" & Rows.Count).End(xlUp).Row
'boucle sur les colonnes
For x = 2 To 4
'ligne de depart
lig1 = 1
'premiere cellule non vide
valcherch = "*"
lig1 = .Columns(x).Find(valcherch, .Cells(lig1, x), , xlPart).Row
.Cells(36, x) = .Cells(lig1, "A")
'derniere cellule non vide en partant du bas
Set plage = .Range(Chr(x + 64) & "1:" & Chr(x + 64) & CStr(lig))
a = plage.Address
For ligplage = lig To 1 Step -1
If .Cells(ligplage, x) <> "" Then
.Cells(37, x) = .Cells(ligplage, "A")
Exit For
End If
Next ligplage
Next x
End With
Application.ScreenUpdating = True
End Sub
dans le code precedent il y a une erreur pour ligne de depart(pas au bon endroit), corrige dans le code ci-dessus
A+
Sub Bouton1_Clic()
Dim plage As Range
Application.ScreenUpdating = False
With Worksheets("feuil1")
'derniere cellules non vide colonne A
lig = Range("A" & Rows.Count).End(xlUp).Row
'boucle sur les colonnes
For x = 2 To 4
'ligne de depart
lig1 = 1
'premiere cellule non vide
valcherch = "*"
lig1 = .Columns(x).Find(valcherch, .Cells(lig1, x), , xlPart).Row
.Cells(36, x) = .Cells(lig1, "A")
'derniere cellule non vide en partant du bas
Set plage = .Range(Chr(x + 64) & "1:" & Chr(x + 64) & CStr(lig))
a = plage.Address
For ligplage = lig To 1 Step -1
If .Cells(ligplage, x) <> "" Then
.Cells(37, x) = .Cells(ligplage, "A")
Exit For
End If
Next ligplage
Next x
End With
Application.ScreenUpdating = True
End Sub
dans le code precedent il y a une erreur pour ligne de depart(pas au bon endroit), corrige dans le code ci-dessus
A+
Merci F894009 pour ta réponse et ta rapidité, la macro fonctionne parfaitement !!!
Y'a plus qu'à la faire tourner maintenant ;o))
Mille mercis !!!
Y'a plus qu'à la faire tourner maintenant ;o))
Mille mercis !!!
J'ai fait une erreur dans mon précédent message. La macro ne me renvoie les dates que pour les lignes des colonnes B à Z, pour les lignes suivantes je n'ai rien d'afficher. le fichier que j'ai utilisé pour la faire tourner est le plus petit en terme de colonnes car j'en ai avec près de 8000 colonnes à traiter.
Bonjour,
Oui pas de soucis, je vais tacher d'être plus claire.
La macro a pour objectif de renvoyer la date (colonne A) associée à la première cellule non vide et à la dernière cellule non vide de chaque colonne de ma feuille (colonnes B et suivantes).
En pratique j'ai 615 colonnes, je cherche donc à identifier pour chacune de mes colonnes en partant de la colonne B, les dates (données en colonne A) correspondantes à la première cellule non vide et la dernière cellule non vide de chaque colonne.
Or quand j'applique la macro, elle ne me renvoie les dates que pour les colonnes A à Z, pour les autres colonnes je n'ai aucun résultat.
Oui pas de soucis, je vais tacher d'être plus claire.
La macro a pour objectif de renvoyer la date (colonne A) associée à la première cellule non vide et à la dernière cellule non vide de chaque colonne de ma feuille (colonnes B et suivantes).
En pratique j'ai 615 colonnes, je cherche donc à identifier pour chacune de mes colonnes en partant de la colonne B, les dates (données en colonne A) correspondantes à la première cellule non vide et la dernière cellule non vide de chaque colonne.
Or quand j'applique la macro, elle ne me renvoie les dates que pour les colonnes A à Z, pour les autres colonnes je n'ai aucun résultat.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
code modifie:
A+
code modifie:
Sub test() Dim plage As Range Application.ScreenUpdating = False With Worksheets("feuil1") 'derniere cellules non vide colonne A lig = Range("A" & Rows.Count).End(xlUp).Row 'boucle sur les colonnes For x = 721 To 724 'ligne de depart lig1 = 1 ' premiere cellule non vide valcherch = "*" lig1 = .Columns(x).Find(valcherch, .Cells(lig1, x), , xlPart).Row .Cells(36, x) = .Cells(lig1, "A") 'derniere cellule non vide en partant du bas Set plage = .Range(Cells(1, x), Cells(lig, x)) a = plage.Address For ligplage = lig To 1 Step -1 If .Cells(ligplage, x) <> "" Then .Cells(37, x) = .Cells(ligplage, "A") Exit For End If Next ligplage Next x End With Application.ScreenUpdating = True End Sub
A+
Mille mercis !!!