XL 2010 VBA, écrire texte sous double condition

Nylream

XLDnaute Junior
Bonjour,

J'aimerais que le mot "Unknow" apparaisse sur certaines cellule aux conditions suivante :
- Si la cellule en A contient un texte
- Si les cellules ciblé sont vide (ne rien écraser)

J'ai testé plusieurs code, dont le suivant mais sans résultat.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Not Application.Intersect(Target, Range("B:C, F:G, I:K")) Is Nothing Then
  
    If Range("A" & i) <> "" And Target.Text = "" Then Target.Offset(0, 0).Value = "Unknow"
  
    End If
  
End Sub
(petite question en passant: comment formaté le code ci dessus en VB pour une meilleur lisibilité?)

Je joins un fichier test

Merci d'avance pour toute aide,
 

Pièces jointes

  • test.xlsm
    16.2 KB · Affichages: 22
Dernière édition:

Iznogood1

XLDnaute Impliqué
bonjour,

If Range("A" & i) <> "" alors que i n'est pas définit explique l'erreur.
If Range("A" & Target.Row).Value <> "" rendra le code fonctionnel.
Un petit option explicit t'aurais permis de voir l'erreur de suite.

Quant à la lisibilité, pas grand chose à changer ; on peut éventuellement supprimer application avant intersect ; mais je ne vois pas grand chose d'autre...

Code:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect(Target, Range("B:C, F:G, I:K")) Is Nothing Then
  If Range("A" & Target.Row).Value <> "" And Target.Value = "" Then Target.Value = "Unknow"
  End If
End Sub
 

Nylream

XLDnaute Junior
Bonsoir Iznogood1, et merci infiniment... je commençais à me transformer en chèvre...

Pour la lisibilité, je parlais du code copier sur le forum dans mon post plus haut, la balise [code*] doit pouvoir s'incrémenter en VB pour être plus lisible :)

En tout cas, ça va m'aider à avoir un code plus propre, merci beaucoup :)
 

Nylream

XLDnaute Junior
Bonjour Iznogood1,

Je rencontre un tout petit soucis lorsque je sélectionne plusieurs cellule "incompatibilité de type"
Cette partie la se surligne dans le code, mais je ne comprend même pas ce qui dérange
If Range("A" & Target.Row).Value <> "" And Target.Value = "" Then
Aurais tu une idée pour que ça n'arrive pas ?

Merci pour ton aide,
 

Iznogood1

XLDnaute Impliqué
Normal,
Target = la plage selectionnée.
donc Target.value n'a pas de sens...
Il faut améliorer ton code pour parcourir les cellules une à une

Example :
Code:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim r As Range
  If Not Application.Intersect(Target, Range("B:C, F:G, I:K")) Is Nothing Then
  For Each r In Intersect(Target, Range("B:C, F:G, I:K"))
  If Range("A" & r.Row) <> "" And r.Value = "" Then r.Value = "Unknow"
  Next r
  End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 500
Membres
103 563
dernier inscrit
samyezzehar