Modifier doublon sous condition

Résolu
Bonjour,

Je bloque sur la macro suivante :
- Classeur :
ISBN DISPO FOURNISSEUR
3281553413593 non dispo LIBRISOFT
3282118102310 dispo CRAENEN
3282118102310 non dispo LIBRISOFT
- Objectif :
SI ISBN = doublon
SI FOURNISSEUR = "CRAENEN" ET DISPO = "dispo"
ALORS FOURNISSEUR "LIBRISOFT" DISPO = "DISPONIBLE"

Donc :
ISBN DISPO FOURNISSEUR
3281553413593 non dispo LIBRISOFT
3282118102310 dispo CRAENEN
3282118102310 DISPONIBLE LIBRISOFT

Ma macro :
Sub nouveautes()
Dim ISBN As Range
Dim dl As Long
Dim x As Long
Dim y As Long
Dim Fournisseur As Range
Dim Dispo As Range
Set ISBN = Range("A2:A" & Range("A2").End(xlDown).Row)
Set Fournisseur = Range("C2:C" & Range("C2").End(xlDown).Row)
Set Dispo = Range("B2:B" & Range("B2").End(xlDown).Row)
ISBN.CurrentRegion.Sort Key1:=ISBN, Order1:=xlAscending, Header:=xlYes
dl = Cells(Application.Rows.Count, 1).End(xlUp).Row
For x = dl to 2 step - 1
y = x - 1
If Application.WorksheetFunction.CountIf(Range("A2:A" & dl), Cells(x, 1)) > 1 Then
If UCase(Dispo.Cells(x).Value) Like "dispo" Then Dispo.Cells(y).Value = "DISPONIBLE"
End If
Next x
End Sub


Où est mon erreur ?

Merci à tou(te)s !

4 réponses

  1. Merci pour tes précisions.
    Cela dit, cela ne fonctionne toujours pas...
    1. Contributeur
      tu vas maintenant pouvoir commencer à corriger les problèmes de logique.
      réfléchis à la logique que tu appliques. peux-tu la décrire?
      quand je teste avec le programme épuré, il y a quelque chose qui change dans les données: ce n'est pas le cas chez toi?
    2. Argh, une nuit de sommeil et tout va mieux. J'avais zappé le UCase et mes minuscules !!!
      Merci pour tout, je passe en résolu.
  2. Contributeur
    une erreur simple:
    UCase(Dispo.Cells(x).Value) Like "dispo"

    serait mieux ainsi:
    UCase(Dispo.Cells(x).Value) = "DISPO"


    une autre erreur:
    au lieu de faire
     dispo.Cells(x).Value
    , ce serait plus correct de faire
    Cells(x,2).Value
    1. Contributeur
      cela nous conduit à ceci:
      Option Explicit
      
      Sub nouveautes()
      Dim ISBN As Range
      Dim dl As Long
      Dim x As Long
      Set ISBN = Range("A2:A" & Range("A2").End(xlDown).Row)
      ISBN.CurrentRegion.Sort Key1:=ISBN, Order1:=xlAscending, Header:=xlYes
      dl = Cells(Application.Rows.count, 1).End(xlUp).Row
      For x = dl To 2 Step -1
          If Application.WorksheetFunction.CountIf(ISBN, Cells(x, 1)) > 1 Then
              If UCase(Cells(x, 2).Value) = "DISPO" Then
                  Cells(x - 1, 2).Value = "DISPONIBLE"
              End If
          End If
      Next x
      End Sub

      tu vas maintenant pouvoir commencer à corriger les problèmes de logique.
  3. Et bien rien, il ne se passe rien après le tri..............
    1. Contributeur
      bonjour, quel est le symptôme: message d'erreur, résultat inattendu, ?