J'ai un problème dont je n'arrive pas à trouver la solution. Peut-être
est-ce tout simple, mais après de vaines recherches sur Excelabo et Google,
je suis toujours bredouille.
Donc, j'explique : j'ai une liste de validation (que j'ai nommé) en F2:F10,
qui me sert pour la validation de la cellule B20. Jusque là... Mon problème
est que dans ma liste de validation, je peux avoir des lignes blanches,
n'importe où (elle est dynamique et évolue selon des critères déterminés
auparavant).
Ce que je voudrais c'est supprimer ces %*!@# de lignes blanches entre les
lignes remplies dans ma liste de validation ! Je sais supprimer les lignes
blanches en fin de liste (avec les fonctions DECALER et NB.VALEUR), mais pas
les lignes DANS la liste.
Donc si quelqu'un a une solution, n'hésitez pas, je suis preneur :) !
Merci, ça a l'air d'être exactement ce que je cherche :) ! Bon, maintenant, je vais me creuser un peu la tête pour bien tout comprendre, à priori ça dépasse de beaucoup mes connaissances actuelles d'Excel ;).
Encore un grand merci,
Cordialement,
François Rivierre
Bonjour AV,
Regarde un exemple là :
http://cjoint.com/?mmpbTS1GWi
AV
Merci, ça a l'air d'être exactement ce que je cherche :) ! Bon, maintenant,
je vais me creuser un peu la tête pour bien tout comprendre, à priori ça
dépasse de beaucoup mes connaissances actuelles d'Excel ;).
Merci, ça a l'air d'être exactement ce que je cherche :) ! Bon, maintenant, je vais me creuser un peu la tête pour bien tout comprendre, à priori ça dépasse de beaucoup mes connaissances actuelles d'Excel ;).
Encore un grand merci,
Cordialement,
François Rivierre
michdenis
Bonjour François,
Il y a aussi ceci qui remplace toutes les formules !!! et qui met ta liste de validation en ordre croissant et sans doublons.
à défaut de ... il y aura toujours les formules ....;-)))
http://cjoint.com/?mmrusFjHU5
Salutations!
"François Rivierre" a écrit dans le message de news: OPBiPly$ Bonjour AV,
Regarde un exemple là :
http://cjoint.com/?mmpbTS1GWi
AV
Merci, ça a l'air d'être exactement ce que je cherche :) ! Bon, maintenant, je vais me creuser un peu la tête pour bien tout comprendre, à priori ça dépasse de beaucoup mes connaissances actuelles d'Excel ;).
Encore un grand merci,
Cordialement,
François Rivierre
Bonjour François,
Il y a aussi ceci qui remplace toutes les formules !!!
et qui met ta liste de validation en ordre croissant et sans doublons.
à défaut de ... il y aura toujours les formules ....;-)))
http://cjoint.com/?mmrusFjHU5
Salutations!
"François Rivierre" <FRiviR2@aol.com> a écrit dans le message de news: OPBiPly$FHA.3048@TK2MSFTNGP15.phx.gbl...
Bonjour AV,
Regarde un exemple là :
http://cjoint.com/?mmpbTS1GWi
AV
Merci, ça a l'air d'être exactement ce que je cherche :) ! Bon, maintenant,
je vais me creuser un peu la tête pour bien tout comprendre, à priori ça
dépasse de beaucoup mes connaissances actuelles d'Excel ;).
Il y a aussi ceci qui remplace toutes les formules !!! et qui met ta liste de validation en ordre croissant et sans doublons.
à défaut de ... il y aura toujours les formules ....;-)))
http://cjoint.com/?mmrusFjHU5
Salutations!
"François Rivierre" a écrit dans le message de news: OPBiPly$ Bonjour AV,
Regarde un exemple là :
http://cjoint.com/?mmpbTS1GWi
AV
Merci, ça a l'air d'être exactement ce que je cherche :) ! Bon, maintenant, je vais me creuser un peu la tête pour bien tout comprendre, à priori ça dépasse de beaucoup mes connaissances actuelles d'Excel ;).
Encore un grand merci,
Cordialement,
François Rivierre
JB
Bonjour,
1 solution matricielle + 1 solution fonction matricielle perso
Voir PJ: http://cjoint.com/?mmvzsplHmS
1- Solution matricielle:
Sélectionner un champ (Liste secondaire)
Lst est la liste avec des vides:
=INDEX(Lst;PETITE.VALEUR(SI(ESTNA(SI(EQUIV(Lst;Lst;0)=LIGNE(INDIRECT("1 :"&LIGNES(Lst)));EQUIV(Lst;Lst;0);""));""; SI(EQUIV(Lst;Lst;0)=LIGNE(INDIRECT("1:"&LIGNES(Lst)));EQUIV(Lst;Lst;0);"" ));LIGNE(INDIRECT("1:"&LIGNES(Lst))))) valider avec Maj+Ctrl+Entrée
Dans Données/Val/Liste (I2:I8 la liste obtenue précédemment) ÞCALER($I$2;;;NB.SI($I$2:$I$8;"<>#nombre!"))
2- Solution fonction matricielle perso:
Créer une liste compressée : -Sélectionner un champ en colonne J2:J8 =SansVides(ListeDépart) valider avec Maj+Ctrl+Entrée
dans Données/Valid/Liste:
ÞCALER($D$5;;;NB.SI(ListeCompressée;"<>0"))
Dans un module: Function SansVides(champ As Range) Dim temp(1000, 1) j = 0 For i = 1 To champ.Count If Not IsEmpty(champ(i)) Then temp(j, 0) = champ(i) j = j + 1 End If Next i SansVides = temp End Function
Cordialement JB
Bonjour,
1 solution matricielle + 1 solution fonction matricielle perso
Voir PJ: http://cjoint.com/?mmvzsplHmS
1- Solution matricielle:
Sélectionner un champ (Liste secondaire)
Lst est la liste avec des vides:
=INDEX(Lst;PETITE.VALEUR(SI(ESTNA(SI(EQUIV(Lst;Lst;0)=LIGNE(INDIRECT("1 :"&LIGNES(Lst)));EQUIV(Lst;Lst;0);""));"";
SI(EQUIV(Lst;Lst;0)=LIGNE(INDIRECT("1:"&LIGNES(Lst)));EQUIV(Lst;Lst;0);"" ));LIGNE(INDIRECT("1:"&LIGNES(Lst)))))
valider avec Maj+Ctrl+Entrée
Dans Données/Val/Liste (I2:I8 la liste obtenue précédemment)
=DECALER($I$2;;;NB.SI($I$2:$I$8;"<>#nombre!"))
2- Solution fonction matricielle perso:
Créer une liste compressée :
-Sélectionner un champ en colonne J2:J8
=SansVides(ListeDépart) valider avec Maj+Ctrl+Entrée
dans Données/Valid/Liste:
=DECALER($D$5;;;NB.SI(ListeCompressée;"<>0"))
Dans un module:
Function SansVides(champ As Range)
Dim temp(1000, 1)
j = 0
For i = 1 To champ.Count
If Not IsEmpty(champ(i)) Then
temp(j, 0) = champ(i)
j = j + 1
End If
Next i
SansVides = temp
End Function
1 solution matricielle + 1 solution fonction matricielle perso
Voir PJ: http://cjoint.com/?mmvzsplHmS
1- Solution matricielle:
Sélectionner un champ (Liste secondaire)
Lst est la liste avec des vides:
=INDEX(Lst;PETITE.VALEUR(SI(ESTNA(SI(EQUIV(Lst;Lst;0)=LIGNE(INDIRECT("1 :"&LIGNES(Lst)));EQUIV(Lst;Lst;0);""));""; SI(EQUIV(Lst;Lst;0)=LIGNE(INDIRECT("1:"&LIGNES(Lst)));EQUIV(Lst;Lst;0);"" ));LIGNE(INDIRECT("1:"&LIGNES(Lst))))) valider avec Maj+Ctrl+Entrée
Dans Données/Val/Liste (I2:I8 la liste obtenue précédemment) ÞCALER($I$2;;;NB.SI($I$2:$I$8;"<>#nombre!"))
2- Solution fonction matricielle perso:
Créer une liste compressée : -Sélectionner un champ en colonne J2:J8 =SansVides(ListeDépart) valider avec Maj+Ctrl+Entrée
dans Données/Valid/Liste:
ÞCALER($D$5;;;NB.SI(ListeCompressée;"<>0"))
Dans un module: Function SansVides(champ As Range) Dim temp(1000, 1) j = 0 For i = 1 To champ.Count If Not IsEmpty(champ(i)) Then temp(j, 0) = champ(i) j = j + 1 End If Next i SansVides = temp End Function
Cordialement JB
JB
Bonjour,
Autre solutions en modifiant la source de Données/validation:
http://cjoint.com/?mngpDh1CHo
Private Sub Workbook_Open() RemplitListe Range("maliste"), "menu1" End Sub
Sub RemplitListe(champ, m) temp = "" tableau = champ For i = 1 To UBound(tableau) If Not IsEmpty(tableau(i, 1)) Then temp = temp & tableau(i, 1) & "," End If Next Range(m).Validation.Modify xlValidateList, Formula1:=Left(temp, Len(temp) - 1) End Sub
Cordialement JB
Bonjour,
Autre solutions en modifiant la source de Données/validation:
http://cjoint.com/?mngpDh1CHo
Private Sub Workbook_Open()
RemplitListe Range("maliste"), "menu1"
End Sub
Sub RemplitListe(champ, m)
temp = ""
tableau = champ
For i = 1 To UBound(tableau)
If Not IsEmpty(tableau(i, 1)) Then
temp = temp & tableau(i, 1) & ","
End If
Next
Range(m).Validation.Modify xlValidateList, Formula1:=Left(temp,
Len(temp) - 1)
End Sub
Autre solutions en modifiant la source de Données/validation:
http://cjoint.com/?mngpDh1CHo
Private Sub Workbook_Open() RemplitListe Range("maliste"), "menu1" End Sub
Sub RemplitListe(champ, m) temp = "" tableau = champ For i = 1 To UBound(tableau) If Not IsEmpty(tableau(i, 1)) Then temp = temp & tableau(i, 1) & "," End If Next Range(m).Validation.Modify xlValidateList, Formula1:=Left(temp, Len(temp) - 1) End Sub
Cordialement JB
François Rivierre
Bonjour à tous,
Un grand merci à tous pour vos réponses, j'ai fait une combinaison de vos différentes propositions, et j'arrive maintenant à faire ce que je veux :) !
Votre savoir me laisse béat d'admiration (et aussi d'envie ;)). Enfin, le bon point c'est que des solutions comme ça, ça me fait progresser à grand pas !
Merci encore une fois.
Bien cordialement,
François Rivierre
Bonjour à tous,
Un grand merci à tous pour vos réponses, j'ai fait une combinaison de vos
différentes propositions, et j'arrive maintenant à faire ce que je veux :) !
Votre savoir me laisse béat d'admiration (et aussi d'envie ;)). Enfin, le
bon point c'est que des solutions comme ça, ça me fait progresser à grand
pas !
Un grand merci à tous pour vos réponses, j'ai fait une combinaison de vos différentes propositions, et j'arrive maintenant à faire ce que je veux :) !
Votre savoir me laisse béat d'admiration (et aussi d'envie ;)). Enfin, le bon point c'est que des solutions comme ça, ça me fait progresser à grand pas !