Aide code macro

Bonjour à tous,

j'ai une macro qui récupère les données correspondantes à une valeur.

j'aimerais pouvoir écraser une de ces données et que cela se répercute automatiquement sur les autres, par une simple règle de trois.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Trouve As Range

  If Not Intersect(Range("L5,K7"), Target) Is Nothing Then
    With Worksheets("Feuil3")
      Set Trouve = .Range("A:A").Find(Range("S7"), lookat:=xlWhole)

      If Not Trouve Is Nothing Then
        Select Case Range("L5")
          Case "bas"
            .Range("B" & Trouve.Row & ":E" & Trouve.Row).Copy Destination:=Range("O7:R7")
          Case "moyen"
            .Range("G" & Trouve.Row & ":J" & Trouve.Row).Copy Destination:=Range("O7:R7")
          Case "haut"
            .Range("L" & Trouve.Row & ":O" & Trouve.Row).Copy Destination:=Range("O7:R7")
        End Select
      End If
    End With
  End If
End Sub

merci

oza

bonjour

peut etre une autre facon avec un code evenementiel simple

14ozaland.zip (8.08 Ko)

bonjour a tous

cordialement

Bonjour tulipe_3,

merci de ta réponse

mais la macro sur ton fichier est un simple recherchev non?

oza

re

oups je repondais a ton sujet " macro recherche" je me suis planté en postant

pas grave cela servira peut etre a un autre lecteur

mon niveau vba ne me permet pas encore de gerer plusieurs colonnes ;alors.....il vafalloir que je m'y mette plus serieusememt

cordialement

Bonjour

A essayer

impeccable ça fonctionne.

merci Banzai64!

Bonjour le forum, Banzaï64,

J'ai essayé d'adapter le code que tu m'as fourni sur mon fichier. Malheureusement j'ai modifié quelque peu la méthodologie et je n'arrive pas à adapter le code en conséquence.

Rien de bien méchant mais je débute en vba alors je suis limité...

merci

oza

Bonjour

Pas sur d'avoir compris

A tester

Bonjour le forum, Banzai64,

je reviens vers vous car j'ai quelques (pour ne pas dire beaucoup) difficultés à apporter une modification au code.

lorsque que je crée une nouvelle référence, il se peut que sa tranche de prix min, ne figure pas dans l'onglet perf.

j'aimerais dans ce cas récupérer dans l'onglet travail à la référence, la moyenne de la ligne supérieure et inférieure à cette tranche de prix.

autre configuration: si le prix de vente conseil créé est inférieur à la première tranche de l'onglet perf (qui n'est autre que le prix min présent dans données) alors récupérer les données de la première tranche min. (ici 7,5)

et inversement, si le prix de vente conseil créé est supérieur à la dernière tranche de l'onglet perf (qui n'est autre que le prix max présent dans données) alors récupérer les données de la dernière tranche min. (ici 270)

j'espère avoir été compréhensible, je vous joins mon fichier avec des exemples.

merci

oza

Bonjour

Je n'arrive pas à te suivre

Dans le fichier exemple : L25 = 138 (niveau bas) ==> pour avoir 138 en L25 il faut rentrer (par exemple) 150 en F25

Et on obtient 138 En L25 et 164 en M25

Et toi tu parles de 60 et 113 ==> D'où tu les sors ?

A suivre déjà pour cette explication

oui pardon j'ai fais une erreur.

avec mon exemple c'est pas 138 mais 100.

Bonjour

Regardes cet essai

à première vue cela fonctionne correctement,

je l'adapte sur mon fichier et je te tiens au courant.

merci beaucoup!

oza

peux tu m'expliquer ce bout de code?

        For J = 3 To .Range("A" & Rows.Count).End(xlUp).Row
          If .Cells(J, "A") > Range("L25") Then
            For I = 0 To 3
              Cells(25, 8 + I) = (.Cells(J - 1, Cl + I) + .Cells(J, Cl + I)) / 2
            Next I
            Exit For
          End If
        Next J

Bonjour

Quelques explications

        For J = 3 To .Range("A" & Rows.Count).End(xlUp).Row       ' Dans le tableau de la page "Perfs" colonne A
          If .Cells(J, "A") > Range("L25") Then                   ' Vérification si valeur testée est plus grande que la valeur cherchée
            For I = 0 To 3                                        ' On l'a trouvée (on veut 4 valeurs)
              Cells(25, 8 + I) = (.Cells(J - 1, Cl + I) + .Cells(J, Cl + I)) / 2  'Moyenne de la valeur inférieure et de la valeur supérieure
            Next I
            Exit For                                              ' Si la valeur est trouvée on quitte
          End If
        Next J

merci pour les explications,

Cells(25, 8 + I)

si j'ai tout bien compris, le 8 correspond à la huitième colonne (H) de l'onglet "travail à la référence"?

Bonjour

Oui tu as compris

ok merci beaucoup Banzai64!

Bonjour,

je reviens vers vous car j'ai une petite modification à faire

je voudrais multiplier les données récupérées en H25:K25 par le nombre de magasins en D25.

si le nombre de magasins est modifié, les données s'actualiseront comme lorsque l'on change le niveau.

merci du coup de main

oza

5encadrants-1.zip (18.51 Ko)

Bonjour

A voir

merci Banzai64

oza

Rechercher des sujets similaires à "aide code macro"