remplacement d'une valeur soumise a condition

  • Initiateur de la discussion Initiateur de la discussion hercule78
  • Date de début Date de début

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 !

H

hercule78

Guest
Bonjour à toutes et tous,

je souhaiterais comprendre les différentes étapes pour réaliser ma première macro.
je vous expose le sujet de cette macro.
dans ma colonne A j'ai deux valeurs des titi et des toto. Dans ma colonne B j'ai une suite de chiffres qui va de 1 à 10.
je souhaiterais que la valeur dans la colonne B soit entre crochet si la valeur correspondante dans A et toto.

exemple

A B
titi 1
titi 2
toto 3
titi 4


Résultat que je souhaiterais obtenir

A B
titi 1
titi 2
toto [3]
titi 4


Je ne sais pas si je peux arriver a se résultat via une fonction ou s'il faut passer par du VBA ?

Encore toutes mes excuses pour ce qui penseront perdre leur temps sur un problème si insignifiant... je débute et ni connais vraiment rien, je souhaiterais juste que l'on m'oriente dans ma recherche, merci infiniment pour votre indulgence.

Hercule78
 
Dernière modification par un modérateur:
Re : remplacement d'une valeur soumise a condition

Bonsoir,

Tu peux coller ceci dans un CommandButton comme ceci
Code:
Private Sub CommandButton1_Click()
    
    For n = 1 To Range("A1000").End(xlUp).Row
        If Cells(n, 1).Value = "Toto" Then
            Cells(n, 2).Value = "[" & Cells(n, 2).Value & "]"
        Else
            Cells(n, 2).Value = Cells(n, 2).Value
        End If
    Next n
    
End Sub
Pour insérer un CommandButton sur la feuille, tu vas dans l'onglet du ruban "Développeur" puis "Insérer" puis le premier petit bouton dans "Contrôles ActiveX" (avec Office 2010, autres versions je ne me rappele plus 😎).

Ou avec formule, ce que je propose c'est de rajouter une colonne de chiffre en C coller cette formule en C1 et tirer vers le bas puis masquer la colonne B...
Code:
=SI(A1="Toto";"["&B1&"]";B1)
 
Dernière édition:
Re : remplacement d'une valeur soumise a condition

Bonsoir,
à tester :
Code:
Sub test()
For Each c In Range([A1], Range("A" & Rows.Count).End(xlUp))
If c = "toto" Then c.Offset(0, 1) = "[" & c.Offset(0, 1) & "]"
Next c
End Sub
A+
Edit : bonsoir Hulk🙂
 
Re : remplacement d'une valeur soumise a condition

Merci beaucoup pour ton aide. Pour info le code dans un CommandButton ne fonctionne pas par contre celui de la fonction marche nickel. J'ai essayer de lui rajouter un critere de valeur logique en utilisant OU est cela marche parfaitement

=SI(OU(A1="Toto";A1="tutu");"["&B1&"]";B1)

Encore merci Hulk pour ton aide.

Cordialement,

Hercule78
 
Re : remplacement d'une valeur soumise a condition

Bonsoir david84,

J'ai tester ton code que j'ai appliquer dans le CommandButton que m'avait préconisé Hulk est cela marche d'enfer. Un grand merci !
Cela me rend a l’évidence (tout comme le proverbe) que tout les chemins mènent à Rome... En l’occurrence qu'il y a plusieurs solutions pour résoudre un même problème.
Encore Merci à vous deux

Cordialement,

Hercule78
 
Re : remplacement d'une valeur soumise a condition

Bonsoir à toutes et tous,

Je poursuis l'aventure dans les méandres du language vba. Pour faire suite au post précédent, je voudrais compliquer un peu en ne traitant pas une cellule vide et donc éviter la création des crochets quand il n'y a pas de données dans la cellule.

Pour exemple le code de david84 fonctionne à merveille, il intègre parfaitement la valeur de la cellule B en la mettant entre crochets dès que "toto" est détecter dans la colonne A. Mais imaginons qu'il y a plusieurs "toto" dans la colonne A mais que dans la colonne B certaines cellules soit vides ! Le code de david84 ecrit : []. Comment mettre une exception si la valeur est null pour ne pas mettre les crochets ?

Merci à tous ceux qui prennent de leur temps pour aider les novices tel que moi, à réaliser un tout petit pas, afin de ne pas mourir idiot...

Hercule78
 
Re : remplacement d'une valeur soumise a condition

Salut hercule78, Hulk 🙂, David 🙂 le Forum

Le code de David Modifié

Code:
Sub test()
For Each c In Range([A1], Range("A" & Rows.Count).End(xlUp))
If c = "toto" And c.Offset(, 1) <> "" Then c.Offset(0, 1) = "[" & c.Offset(0, 1) & "]"
Next c
End Sub

Bonne Journée
 
Re : remplacement d'une valeur soumise a condition

Bonjour Dull,

Merci pour ton aide. Peut etre pourrais tu m'expliquer pourquoi si je deplacer mes données d'une colonne en faisant une insertion quant j'écris

Sub test()
For Each c In Range([B1], Range("B" & Rows.Count).End(xlUp))
If c = "toto" And c.Offset(, 1) <> "" Then c.Offset(0, 1) = "[" & c.Offset(0, 1) & "]"
Next c
End Sub

ca marche plus !

Pourtant mon toto est dans la colonne B est mes chiffres dans la colonne C. En modifiant [A1] par [B1] cela devrai juste décaler l'analyse, non ?

As tu une piste ?

En te souhaitant une bonne journée

Cordialement,

Hercule78
 
Re : remplacement d'une valeur soumise a condition

Re hercule78, le Fil

je te confirme que ton analyse est implacable et que la je sèche.

Plusieurs pistes :
Toto <> toto <> TOTO Mettre Option Compare Text tout en haut du module
sur quel événement se produit le changement
Un Bouton? si oui le changement se produit t'il sur la même feuille ou une autre?
l'événement "Private Sub Worksheet_Change(ByVal Target As Range)"
un autre?

De plus j'ai remarqué sur le code qu'il remet des croches à chaque changement. [14] devient [[14]], puis [[[14]]]
Pour éviter cela

Code:
Sub test()
Dim C As Range
With Sheets("Feuil1")
For Each C In .Range([B1], .Range("B" & Rows.Count).End(xlUp))
If C = "toto" And C.Offset(, 1) <> "" And Left(C.Offset(, 1), 1) <> "[" Then C.Offset(, 1) = "[" & C.Offset(, 1) & "]"
Next C
End With
End Sub

Bon courage à toi et Bonne Journée à Tous
 

Pièces jointes

Re : remplacement d'une valeur soumise a condition

Bonsoir Dull,

Je te confirme que ton code fonctionne à merveille ! Le problème venait en fait du changement de fichier .xls (j'avais fait un copier coller et je crois que cela devait interférer) en reprenant depuis le début tout marche. Et encore merci pour la répétition des [[[14]]] , maintenant cela ne le fait plus.

Bravo aux membres du forum d'avoir était réactif et efficace. Je vous souhaite à toutes et tous une agréable soirée.

Cordialement,

Hercule78
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
887
Réponses
2
Affichages
433
Retour