rajouter un * à une cellulee si.....

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pascal21

XLDnaute Barbatruc
bonjour le forum
j'ai un tableau avec des valeurs (fournisseurs) en colonne F
j'aimerais rajouter un * à la suite du nom si sur la m^me ligne, une ou plusieurs colonnes G à P ne sont pas vides
(en fait c'est pour me signaler que ce fournisseur (colonne F) n'est pas seul à vendre son produit)
Je pourrais le rajouter à la main mais comme je ne serai pas seul à remplir la base de données, je ne voudrais pas d'oublis
je vous mets un ptit' exemple
merci
 

Pièces jointes

Re : rajouter un * à une cellulee si.....

Salut Pascal21 🙂,
Pour le traitement de base
Code:
Sub Initialise()
Dim I As Double
Application.EnableEvents = False
For I = 1 To 5000
If Application.WorksheetFunction.CountBlank(Range("G" & I & ":P" & I)) <> 10 Then
If Right(Range("F" & I), 1) <> "*" Then Range("F" & I) = Range("F" & I) & "*"
Else
If Right(Range("F" & I), 1) = "*" Then Range("F" & I) = Left(Range("F" & I), _
    Len(Range("F" & I)) - 1)
End If
Next I
Application.EnableEvents = True
End Sub
ensuite, afin que chaque nouvelle saisie soit traitée automatiquement
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Application.WorksheetFunction.CountBlank(Range("G" & Target.Row & ":P" & Target.Row)) <> 10 Then
If Right(Range("F" & Target.Row), 1) <> "*" Then Range("F" & Target.Row) = Range("F" & Target.Row) & "*"
Else
If Right(Range("F" & Target.Row), 1) = "*" Then Range("F" & Target.Row) = Left(Range("F" & Target.Row), _
    Len(Range("F" & Target.Row)) - 1)
End If
Application.EnableEvents = True
End Sub
Bon WE 😎
 
Re : rajouter un * à une cellulee si.....

Salut pascal21 et le forum
Hormis le fait que choisir * ne semble pas judicieux (fait donc une recherche de * avec <Ctrl>+<F> ou un filtre automatique avec contient *)
Code:
Sub test()
Dim Cel As Range, X As Integer, y
For Each Cel In Range([F2], Cells(Rows.Count, "F").End(xlUp))
    If Cel <> "" And Right(Cel, 1) <> "*" Then
        For X = 1 To 10
            If Cel.Offset(0, X) <> "" Then
                Cel = Cel & "*"
                Exit For
            End If
        Next X
    End If
Next Cel
End Sub
Pour la plage de F2 à dernière non vide en F
si la cellule n'est pas vide ou que son dernier caractère n'est pas déjà *
si une des 10 colonnes suivantes n'est pas vide, mettre une + en fin
A+
 
Re : rajouter un * à une cellulee si.....

bonjour DULL JNP
dull
même si ta solution est plus simple je ne pourrai le mettre en place sans modifier en profondeur mon classeur
j'ai des tas des formules type recherchev qui n'apréciraient pas mais je la garde sous le coude on ne sais jamais
JNP
je viens de faire les essais c'est assez bluffant!!!
par contre si je supprime le contenu des colonnes G à P l'astérisque reste en colonne F
pire il n'y a pas moyen de l'enlever même si F est vide ????????
 
Re : rajouter un * à une cellulee si.....

Re 🙂,
par contre si je supprime le contenu des colonnes G à P l'astérisque reste en colonne F
pire il n'y a pas moyen de l'enlever même si F est vide ????????
J'ai volontairement limité l'événementielle aux modifications d'une cellule à la fois, pour éviter les "couacs", donc effectivement, l'effacement de toutes les cellules de G à P ne provoque pas la modification. En modifiant
Code:
If Target.Count > 1 Then Exit Sub
avec
Code:
If Target.Rows.Count > 1 Then Exit Sub
ça devrait fonctionner.
Si F est vide, mais pas la ligne, c'est logique que l'astérisque reste, non 😛 ?
Sans aucun jugement de valeur (en tout cas pas du style "je suis le meilleur" 😱), le code de Gorfael doit être un peu plus lent vu qu'il scanne toutes les cellules alors que l'appel à une formule de feuille doit être plus rapide (d'après les moults essais cronométrés sur le forum 🙄), mais surtout, je t'ai inclu le cas du fournisseur qui avait déjà une * car concurencé et qui ne l'est plus 😛...
Bon WE 😎
 
Re : rajouter un * à une cellulee si.....

bon ben JNP
çà a l'air de fonctionner ton code
pas trop compris pourquoi je n'arrive pas à effacer le * si les colonnes G😛 sont vides
pas grave, le principal est là j'ai bien un * si j'ai d'autres fournisseurs sur la même ligne
je n'avais encore pas eu l'occasion de travailler sur une base de données
c'est énorme ce quel'on peut arriver à inclure comme "options" plus ou moins utiles lol!!!!!
promis je m'arrête à 30 MO
 
Re : rajouter un * à une cellulee si.....

Salut pascal21 et le forum
MFC de la cellule F2
Condition 1
Case 1 : la formule est
Case 2 : =SOMMEPROD(($G2:$P2<>"")*1)
Format fond grisé

Avantages : réaction "instantanée". Pas besoin de *. On peut choisir l'aspect visuel. on peut l'appliquer sur n'importe quelle cellule de la ligne.
Inconvénients : peut alourdir sensiblement le fichier
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
265
Réponses
3
Affichages
315
Réponses
2
Affichages
284
Retour