Daury

XLDnaute Nouveau
Bonjour,

Je travaille sur un logiciel assez complexe utilisant VBA. La cellule E15 est une liste déroulante OUI/NON.
-Si E15 = OUI alors il faut que D18 soit libre et VBA va y rentrer un chiffre qu'il calcule.
-Si E15 = NON alors il faut que D18 soit une liste déroulante avec 79 et 91 comme possibilités

J'ai essayé avec le code suivant :

If Sheets("AW139 6,8T").Cells(15, 5) = "OUI" Then
Sheets("AW139 6,8T").Cells(18, 4) = Sheets("AW139 6,8T").Cells(19, 4) / Sheets("AW139 6,8T").Cells(20, 4)
ElseIf Sheets("AW139 6,8T").Cells(15, 5) = "NON" Then
Sheets("AW139 6,8T").Range("D18").Locked = False
With Range("D18").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="79,91"
End With
End If


J'ai a chaque fois un message d'erreur "Erreur définie par l'application ou par l'objet" et la ligne .Add Type se surligne en jaune mais je ne comprends pas ce qui est faux...
Pourriez-vous m'aider à trouver une solution s'il vous plait ?

Merci d'avance ! :)
 

gosselien

XLDnaute Barbatruc
Bonjour,

ceci semble fonctionner :)

VB:
Sub liste()
If Sheets("feuil1").Cells(15, 5).Value = "OUI" Then
   Cells(18, 4).Clear
   Cells(18, 4).Value = Cells(19, 4) / Cells(20, 4).Value
ElseIf Sheets("feuil1").Cells(15, 5).Value = "NON" Then
   With Range("D18").Validation
      Cells(18, 4).Clear
      '.Delete
      .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="79,91"
   End With
End If
End Sub
 

Daury

XLDnaute Nouveau
Bonjour gosselien, je viens d'essayer en intégrant votre code et le même message d'erreur s'affiche. Je m'y prends peut-être mal.
Code utilisé :

If Sheets("AW139 6,8T").Cells(15, 5) = "OUI" Then
Sheets("AW139 6,8T").Cells(18, 4).Clear
Sheets("AW139 6,8T").Cells(18, 4) = Sheets("AW139 6,8T").Cells(19, 4) / Sheets("AW139 6,8T").Cells(20, 4)

ElseIf Sheets("AW139 6,8T").Cells(15, 5) = "NON" Then
Sheets("AW139 6,8T").Range("D18").Locked = False
With Range("D18").Validation
Sheets("AW139 6,8T").Cells(18, 4).Clear
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="79,91"
End With

End If
 

Daury

XLDnaute Nouveau
Bonjour,

comme ceci peut-être
changer uniquement e15

Bonjour Gilbert, en effet votre feuille Excel fonctionne très bien merci mais quand je l'intègre dans mon programme rien ne va plus et j'ai toujours le même message d'erreur... J'avais simplifié un peu la partie de mon programme sur le forum. Voici la partie qui pose problème avec plus de détails :
...Début du Sub avec plusieurs If Not Intersert...

If Not Intersect(Target, Union(Cells(15, 5), Cells(18, 4), Cells(19, 5), Cells(20, 5))) Is Nothing Then

If Sheets("AW139 6,8T").Cells(15, 5) = "OUI" Then
Range("D18").Validation.Delete
Sheets("AW139 6,8T").Cells(18, 4) = Sheets("AW139 6,8T").Cells(19, 4) / Sheets("AW139 6,8T").Cells(20, 4)
Call ProtectionSelective
Call ETAT_Cent6
Calculate

ElseIf Sheets("AW139 6,8T").Cells(15, 5) = "NON" Then
Sheets("AW139 6,8T").Range("D18").Locked = False
With Range("D18").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="79,91"
End With
Call ProtectionSelective
Call ETAT_Cent6
Calculate
End If
End If

...Il y a d'autres If Not Intersect qui suivent et Fin du Sub...
 

Daury

XLDnaute Nouveau
Il y a sans doute un problème mais sans fichier difficile de vous aider.
Je travaille sur un programme de centrage pour hélicoptères, vu que c'est pour ma boite je ne peux pas envoyer le fichier...
J'ai réussi à bidouiller quelque chose, j'ai créer une liste de manière conventionnelle dans la case et j'ai dit à VBA que si E15 = OUI alors il force la cellule et rentre quand même une valeur même si elle ne fait pas partie de la liste. Ca semble fonctionner !
En tout cas je vous remercie beaucoup pour votre aide :)
 

Discussions similaires

Réponses
5
Affichages
817

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA