Demande aide pour simplification code VB

  • Initiateur de la discussion Initiateur de la discussion mig_59
  • 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 !

mig_59

XLDnaute Junior
Bonjour forum

Voila, j'ai trouvé un bout de code VB me permetant de remplir une cellule vide par defaut
Je l'ai adapté pour 5 cellules

Cela fonctionne très bien mais a mon avis, il y aurait un moyen de simplifier en queque ligne pour le rendre plus propre
Je vous joint mon exemple

merci d'avance pour votre aide
 

Pièces jointes

Re : Demande aide pour simplification code VB

Hello,

Je ne comprends pas ton code, tu lui dis de mettre un "x" si vide, mais que si "x" tu le vide ??

Bref, comme ceci..
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Avec une boucle..

For i = 2 To 6
    Cells(2, i).Value = "x"
    'Où 2 = ligne 2 et i = colonnes 2 à 6 (B à F)
Next i

'Ou plus simple, mais ça je pense que tu sais

'Range("B2:F2").Value = "x"

End Sub
 
Dernière édition:
Re : Demande aide pour simplification code VB

Bonjour Hulk

Peut être mal exprimé
Ton code, n'est pas celui que j'attendais
Ce que fait ton code lorsque je saisie une valeur en B2 et que je change de cellule, il me remet un "x"

Si tu regardes l'exemple, tu cliques sur une cellule B2, celle-ci se vide et on peut saisir une autre valeur et passer la cellule suivante, si je l'efface B2, elle reprend sa valeur initiale c.-à-d. un "x"

Le code actuel fonctionne très bien, mais je croix qu'il pourrait être simplifié

Cdt
 
Re : Demande aide pour simplification code VB

Re,

Autant pour moi !

Essaie comme ça..
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    For i = 2 To 6
        
        If Target.Address = "$B$2:$F$2" Then
            
            If Target.Value = "x" Then Target.Value = ""
        
            ElseIf Cells(2, i).Value = "" Then
                Cells(2, i).Value = "x"
        End If
    
    Next i
   
End Sub
Ou même..
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    For i = 2 To 6
        If Cells(2, i).Value = "" Then Cells(2, i).Value = "x"
    Next i
   
End Sub
 
Re : Demande aide pour simplification code VB

Salut mig_59, Doc Banner 🙂, le Forum

je proposerais quelque chose comme cela éventuellement

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i as Byte
For i = 2 To 6
If Target.Address = Cells(2, i).Address Then
        If Target.Value = "x" Then Target.Value = ""
    ElseIf Cells(2, i).Value = "" Then
        Cells(2, i).Value = "x"
    End If
Next i
End Sub
 
Re : Demande aide pour simplification code VB

Bonjour Mig, Hulk, Dull (aïe difficile à dire ça...), bonjour le forum,

Peut-être comme ça :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B2:F2")) Is Nothing Then
    Range("B2:F2") = "x"
    Target.Value = ""
End If
End Sub

[Édition]
Pardon ! Complètement à coté ! Ça m'apprendra à pas tout lire...
 
Dernière édition:
Re : Demande aide pour simplification code VB

Bonjour Hulk, Dull, Robert

Le code de Hulk et Dull fonctionnent à merveille
Je retiendrai celui de Hulk (simplifié en 3 lignes), je garde les autres sous le coude
en revanche celui de Robert fonctionne mais pas comme je le souhaite.

Merci a vous 3 de vous être penchés sur mon souci

Cordialement
 
- 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
523
Réponses
10
Affichages
1 K
Réponses
10
Affichages
583
Retour