1ere, 2nde... cellunes non vide
Résolu
sanchis81
Messages postés
138
Statut
Membre
-
sanchis81 Messages postés 138 Statut Membre -
sanchis81 Messages postés 138 Statut Membre -
Bonjour à tous,
j'ai un tableau Excel sous la forme suivante:
A B C D E
1
2 8
3
4 7
5
6 1
J'aimerais venir coller dans la case E1 la valeur de la 1ère cellule non vide de la colonne B
E2 la valeur de la 2nde cellule non vide de la colonne B
E3 la valeur de la 3ème cellule non vide de la colonne B
Le résultat serait:
E
1 8
2 7
3 1
Merci d'avance pour votre aide!
Sanchis
j'ai un tableau Excel sous la forme suivante:
A B C D E
1
2 8
3
4 7
5
6 1
J'aimerais venir coller dans la case E1 la valeur de la 1ère cellule non vide de la colonne B
E2 la valeur de la 2nde cellule non vide de la colonne B
E3 la valeur de la 3ème cellule non vide de la colonne B
Le résultat serait:
E
1 8
2 7
3 1
Merci d'avance pour votre aide!
Sanchis
A voir également:
- 1ere, 2nde... cellunes non vide
- Supprimer page word vide - Guide
- Caractere vide - Guide
- Formate pour taxer client frigo vide - Forum Vos droits sur internet
- Coeur vide - Forum Facebook
- Comment faire les coeur vide sur FB ✓ - Forum Facebook
6 réponses
salut Sanchis
y'avait bin longtemps...
edit 11:23h tu dis si tu veux absolument commencer ligne 1
y'avait bin longtemps...
Const dep As Byte = 2 'ligne de départ minimum
Sub colB_nonvide()
derlig = Range("B65536").End(3).Row
nbre = Application.CountA(Range(Cells(dep, 2), Cells(derlig, 2)))
Application.ScreenUpdating = False
Range(Cells(dep, 5), Cells(derlig, 5)).ClearContents
lig = dep
For cptr = 0 To nbre - 1
lig = Columns(2).Find("*", Cells(lig, 2)).Row
Cells(dep + cptr, 5) = Cells(lig, 2)
Next
End Sub
edit 11:23h tu dis si tu veux absolument commencer ligne 1
Salut Sanchis
y'avait bin longtemps...
Const dep As Byte = 2 'ligne de départ minimum
Sub colB_nonvide()
derlig = Range("B65536").End(3).Row
nbre = Application.CountA(Range(Cells(dep, 2), Cells(derlig, 2)))
Application.ScreenUpdating = False
Range(Cells(dep, 5), Cells(derlig, 5)).ClearContents
lig = dep
For cptr = 0 To nbre - 1
lig = Columns(2).Find("*", Cells(lig, 2)).Row
Cells(dep + cptr, 5) = Cells(lig, 2)
Next
End Sub
Bonjour Michel,
suite à ton dernier message, j'ai mis en place ta macro dans mon outil.
Mon tableau fait environ 3000 lignes. Chaque cellule contient une formule. Selon les cas, soit le résultat de cette formule est "" ou un nombre.
Le problème est que la macro analyse l'ensemble des cellules puisque ces cellules contiennent des formules. Et c'est très très long.
A l'inverse, si je supprime l'ensemble des formules sauf celles où il y a un résultat, la macro est très rapide. Le problème est que je ne peux pas me permettre de les supprimer....
Aurais tu une solution pour rendre cette macro plus rapide?
Merci d'avance michel.
y'avait bin longtemps...
Const dep As Byte = 2 'ligne de départ minimum
Sub colB_nonvide()
derlig = Range("B65536").End(3).Row
nbre = Application.CountA(Range(Cells(dep, 2), Cells(derlig, 2)))
Application.ScreenUpdating = False
Range(Cells(dep, 5), Cells(derlig, 5)).ClearContents
lig = dep
For cptr = 0 To nbre - 1
lig = Columns(2).Find("*", Cells(lig, 2)).Row
Cells(dep + cptr, 5) = Cells(lig, 2)
Next
End Sub
Bonjour Michel,
suite à ton dernier message, j'ai mis en place ta macro dans mon outil.
Mon tableau fait environ 3000 lignes. Chaque cellule contient une formule. Selon les cas, soit le résultat de cette formule est "" ou un nombre.
Le problème est que la macro analyse l'ensemble des cellules puisque ces cellules contiennent des formules. Et c'est très très long.
A l'inverse, si je supprime l'ensemble des formules sauf celles où il y a un résultat, la macro est très rapide. Le problème est que je ne peux pas me permettre de les supprimer....
Aurais tu une solution pour rendre cette macro plus rapide?
Merci d'avance michel.
Salut Sanchis
y'avait bin longtemps...
Const dep As Byte = 2 'ligne de départ minimum
Sub colB_nonvide()
derlig = Range("B65536").End(3).Row
nbre = Application.CountA(Range(Cells(dep, 2), Cells(derlig, 2)))
Application.ScreenUpdating = False
Range(Cells(dep, 5), Cells(derlig, 5)).ClearContents
lig = dep
For cptr = 0 To nbre - 1
lig = Columns(2).Find("*", Cells(lig, 2)).Row
Cells(dep + cptr, 5) = Cells(lig, 2)
Next
End Sub
Bonjour Michel,
suite à ton dernier message, j'ai mis en place ta macro dans mon outil.
Mon tableau fait environ 3000 lignes. Chaque cellule contient une formule. Selon les cas, soit le résultat de cette formule est "" ou un nombre.
Le problème est que la macro analyse l'ensemble des cellules puisque ces cellules contiennent des formules. Et c'est très très long.
A l'inverse, si je supprime l'ensemble des formules sauf celles où il y a un résultat, la macro est très rapide. Le problème est que je ne peux pas me permettre de les supprimer....
Aurais tu une solution pour rendre cette macro plus rapide?
Merci d'avance michel.
y'avait bin longtemps...
Const dep As Byte = 2 'ligne de départ minimum
Sub colB_nonvide()
derlig = Range("B65536").End(3).Row
nbre = Application.CountA(Range(Cells(dep, 2), Cells(derlig, 2)))
Application.ScreenUpdating = False
Range(Cells(dep, 5), Cells(derlig, 5)).ClearContents
lig = dep
For cptr = 0 To nbre - 1
lig = Columns(2).Find("*", Cells(lig, 2)).Row
Cells(dep + cptr, 5) = Cells(lig, 2)
Next
End Sub
Bonjour Michel,
suite à ton dernier message, j'ai mis en place ta macro dans mon outil.
Mon tableau fait environ 3000 lignes. Chaque cellule contient une formule. Selon les cas, soit le résultat de cette formule est "" ou un nombre.
Le problème est que la macro analyse l'ensemble des cellules puisque ces cellules contiennent des formules. Et c'est très très long.
A l'inverse, si je supprime l'ensemble des formules sauf celles où il y a un résultat, la macro est très rapide. Le problème est que je ne peux pas me permettre de les supprimer....
Aurais tu une solution pour rendre cette macro plus rapide?
Merci d'avance michel.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re,
il autait été utile que tu précises les conditions et le nombre de lignes au départ... essaies de t'en souvenir pour ta prochaine demande
la macro modifiée en fonction. compte tenu du nombre de lignes, utilisation d'un tableau de variables pour aller + vite
il autait été utile que tu précises les conditions et le nombre de lignes au départ... essaies de t'en souvenir pour ta prochaine demande
la macro modifiée en fonction. compte tenu du nombre de lignes, utilisation d'un tableau de variables pour aller + vite
Const dep As Byte = 2 'ligne de départ minimum
Sub colB_nonvide()
Dim tablo
Dim derlig As Integer, nbre As Integer, cptr As Integer, lig As Integer
derlig = Range("B65536").End(xlUp).Row
nbre = Application.CountA(Range(Cells(dep, 2), Cells(derlig, 2))) - _
Application.CountIf(Range(Cells(dep, 2), Cells(derlig, 2)), "")
Application.ScreenUpdating = False
Range(Cells(dep, 5), Cells(derlig, 5)).ClearContents
ReDim tablo(nbre - 1)
lig = dep - 1
For cptr = 0 To nbre - 1
lig = Columns(2).Find("*", Cells(lig, 2), xlValues).Row
tablo(cptr) = Cells(lig, 2)
Next
Range("E2").Resize(UBound(tablo), 1) = Application.Transpose(tablo)