Recherche avec multi conditions - VBA

Victoria1975_3175 Messages postés 4 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour à toutes et tous, 

Petit nouveau sur le site, je me lance dans la programmation VBA.

Je dois mettre en place une base tarifaire. Celle-ci sera liée aux tarifs envoyés par les fournisseurs (environ une centaine)

Je bloque sur la recherche conditionnelle.

J'ai deux cas de figure:

1) Je dois rapatrier le tarif le plus élevé d'un article d'un fournisseur sur la base tarifaire

2) Je dois rapatrier en fonction du conditionnement (palette de 100, palette de 50, piece unitaire, ...) les prix.

Je pensais pour le 1er point (mais cela ne marche pas) à la formule suivante:

Sub EssaiFournisseur()

Dim Ligne1 As Long, ligne2 As Long, Ligne3 As Long, ligne4 As Long, 

ligne2 = Sheets("Donnees").Columns(16).Find("*", , , , xlByColumns, xlPrevious).Row

Ligne1 = Sheets("Nicoll").Columns(3).Find("*", , , , xlByColumns, xlPrevious).Row

Ligne3 = Sheets("Nicoll").Columns(21).Find("*", , , , xlByColumns, xlPrevious).Row

Ligne4 = Sheets("Nicoll").Columns(10).Find("*", , , , xlByColumns, xlPrevious).RowFor n = 1 To ligne2

For m = 1 To Ligne1

For p = 1 To Ligne3

For q = 1 To Ligne4

If p>q And Sheets("Donnees").Range("P" & n) = Sheets("Nicoll").Range("C" & m) ThenSheets("Donnees").Range("AE" & n) = Sheets("Nicoll").Range("U" & m)

End If

Next

Next

End Sub

Merci de votre aide

J'ai joint un fichier dont les chiffres ont été changés

3 réponses

  1. Victoria1975_3175 Messages postés 4 Statut Membre
     

    Bonjour, 

    Merci pour votre mail. Comme je débute en VBA et sur ce site, je ne maitrise pas encore tout loin de là. 

    Je m'en excuse. Le code ne me convient pas car il ne fonctionne pas. Je l'ai un peu modifié comme vous pouvez le voir néanmoins quand je l'exécute il m'indique erreur de compilation erreur de syntaxe.

    Merci pour votre aide

    Sub EssaiNicollprixv2()
    Dim Ligne1 As Long, ligne2 As Long, Ligne3 As Long, ligne4 As Long
    ligne2 = Sheets("Donnees").Columns(16).Find("*", , , , xlByColumns, xlPrevious).Row
    Ligne1 = Sheets("Nicoll").Columns(3).Find("*", , , , xlByColumns, xlPrevious).Row
    Ligne3 = Sheets("Nicoll").Columns(21).Find("*", , , , xlByColumns, xlPrevious).Row
    ligne4 = Sheets("Nicoll").Columns(10).Find("*", , , , xlByColumns, xlPrevious).Row
    For n = 1 To ligne2
    For m = 1 To Ligne1
    For p = 1 To Ligne3
    For q = 1 To ligne4
    If p > q And Sheets("Donnees").Range("P" & n) = Sheets("Nicoll").Range("C" & m) Then
    Sheets("Donnees").Range("AE" & n) = Sheets("Nicoll").Range("U" & m)
    Elself p < q And Sheets("Donnees").Range("P" & n) = Sheets("Nicoll").Range("C" & m) Then
    Sheets("Donnees").Range("AE" & n) = Sheets("Nicoll").Range("R" & m)
    End If
    Next
    Next
    Next
    Next
    End Sub
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      Quelle erreur de syntaxe, à quelle ligne?

      Merci de préciser le langage (basic) quand tu postes du code VBA.

      0
  2. Victoria1975_3175 Messages postés 4 Statut Membre
     

    Bonjour, 

    La ligne 13 poserait problème. Sans doute y a-t-il d'autres lignes qui poseraient soucis.

    J'ai du mal à exprimer la conditionnalité multiple (exemple si p < q et que la réf qui est contenue dans la feuille Donnees est égal à la référence présente dans la feuille Nicoll alors l'ordinateur doit aller chercher et rapporter le prix contenu dans U de Nicoll et la mettre à AE de Donnees au niveau correspondante à la réf article.

    Sinon, l'ordinateur doit aller chercher le contenu de R dans Nicoll pour la mettre en AE de Donnees

    Encore une fois merci de votre aide.

    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      C'est quoi ce "Elself"?  Le cinquième caractère doit être un i.

      0