Pb VBA et liste déroulante avec lettre et No

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

C

Caribou

Guest
Bonjour,

j'ai un code qui me permet de dire si A1 non vide alors B1 = A1 mais si en même temps B1 = non vide, alors ne pas remplacer B1 par A1 avec le code suivant :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A1") And Range("B1") = "" Then
Range("B1") = [A1]
End If
End Sub

Le code fonctionne même si A1 et B1 comportent des listes déroulantes numériques : 22, 54...

Mon pb est que mes cases A1 et B1 comportent des listes déroulantes avec lettre et numéro : D4, B3, F2...

Ça me renvoie alors une erreur : "Run-time error '13' type mismatch"

Est-il possible de contourner ce pb ?

Merci Forum
 

Pièces jointes

Re : Pb VBA et liste déroulante avec lettre et No

Bonjour Caribou,

ce code peut-être ?
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("a1:b1")) Is Nothing Then
    If Range("A1") <> "" And Range("B1") = "" Then Range("B1") = [A1]
  End If
End Sub

nb: j'ai changé d'évènement, je ne sais pas si j'ai bien fait. A vous de voir 🙂
 
Re : Pb VBA et liste déroulante avec lettre et No

Merci beaucoup ! La solution fonctionne très bien avec le changement d'événement.

De mon côté, j'ai fini par trouver une solution par :
If Range("A1") <> "" And Range("B1") = "" Then
Range("B1") = [A1]
End If

Par contre, je n'arrive pas à étendre ma solution ni la vôtre à plusieurs cellules.

Par exemple, en partant de votre code :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1😀1")) Is Nothing Then
If Range("A1") <> "" And Range("B1😀1") = "" Then Range("B1😀1") = [A1]
End If
End Sub

C'est le : If Range("A1") <> "" And Range("B1😀1") = ""
qui ne passe pas. Et si je laisse And Range("B1") = "" alors le contenu des cellules C1 et D1 est écrasé.

Comme je n'y connais pas grand chose j'ai improvisé mais ça n'a pas marché :/

Pourriez-vous encore me dire comment étendre votre code ?

Merci !
 
Re : Pb VBA et liste déroulante avec lettre et No

Bonsoir Caribou,

Pas tout à fait certain d'avoir compris ce que vous vouliez faire. Un essai dans le fichier joint:
Code:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xCell As Range

  If Not Intersect(Target, Range("a1:d1")) Is Nothing Then
    ' des changements se sont produits au sein de la zone A1:D1
    If Range("A1") <> "" Then
      'la cellule A1 n'est pas vide
      For Each xCell In Range("B1:D1")
        'dans chaque cellule vide de la zone B1:D1, on place la valeur de A1
        If xCell = "" Then xCell = [A1]
      Next xCell
    End If
  End If

End Sub
 

Pièces jointes

- 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
892
Retour