Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 tout le monde,

un petit up car j'ai beau chercher je ne trouve vraiment pas comment faire.

merci pour votre aide.
 
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…