Recherche de valeur et la copier

Résolu
jof.27 Messages postés 80 Statut Membre -  
jof.27 Messages postés 80 Statut Membre -
Bonjour,
je n'arrive pas a faire ma macro qui à l'air pourtant simple a l'écrit en français.
je souhaites chercher la valeur la plus proche de zéro dans colonne H a partir de la ligne 14, sur la ligne de la valeur proche de zéro je souhaites copier la valeur de la colonne C puis la coller dans la case E3.
si déjà ça c'est possible, je voudrais que la vérification se fasse automatiquement en vérifiant que la valeur sur la ligne trouvée du 0 de la colonne F soit alors égale à 0 après que la valeur en E3 soit collée.
merci de votre aide.

4 réponses

  1. WeaponEDGE
     
    Bonjour,

    On ne peux pas dire que soit clair dans tes propos j'ai pas tout pigé à ce que tu veux mais voici déjà une première macro :

    Sub RECH_VAL_0()
    Nb_Ligne = Sheets(1).Cells(1000000, 8).End(xlUp).Row
    For i = 1 To Nb_Ligne
    x = 0
    Resultat = Sheets(1).Cells(i, 8)

    If Resultat < 0 Then
    Resultat = Resultat * -1
    x = 1
    End If

    If Valeur_0 = "" Then
    If x = 0 Then
    Valeur_0 = Resultat
    Valeur_C = Sheets(1).Cells(i, 3)
    Else
    Valeur_0 = Resultat * -1
    Valeur_C = Sheets(1).Cells(i, 3)
    End If
    Else
    If Resultat < Valeur_0 Then
    If x = 0 Then
    Valeur_0 = Resultat
    Valeur_C = Sheets(1).Cells(i, 3)
    Else
    Valeur_0 = Resultat * -1
    Valeur_C = Sheets(1).Cells(i, 3)
    End If
    End If
    End If
    Next i

    Sheets(1).Cells(3, 5) = Valeur_C
    End Sub

    Cette Macro Vas annalyser la colonne H et pour la ligne ou le montant est le plus proche de 0 il copie la valeur de la colonne C de cette ligne en cellule E3.

    C'est bien ça que tu voulais ?
    1
    1. jof.27 Messages postés 80 Statut Membre
       
      je dois modifier Nb_Ligne = Sheets(1).Cells(1000000, 8).End(xlUp).Row ?
      désolé je ne mis connais pas trop
      0
    2. jof.27 Messages postés 80 Statut Membre
       
      voulez vous mon fichier? pour vous rendre compte et le faire directement dessus?
      0
    3. jof.27 Messages postés 80 Statut Membre
       
      http://cjoint.com/13jn/CFmpcr5osrB.htm
      0
    4. WeaponEDGE
       
      Non tu n'a rien besoin de modifier excepter sur la ligne
      For i = 1 To Nb_Ligne

      tu remplace le 1 par 14 car les données de ton tableau commence à partir de la ligne 14

      Apparement tu sais ou copier la macro.

      Sur la page où se trouve ton tableau, ajoute un bouton et fais un clique droit dessus puis assigner macro. selectionne RECH_VAL_0 puis OK
      0
    5. jof.27 Messages postés 80 Statut Membre
       
      il me dit toujours qu'il y a un problème sur la ligne
      Nb_Ligne = Sheets(1).Cells(1000000, 8).End(xlUp).Row
      erreur d'exécution "1004"
      0
  2. jof.27 Messages postés 80 Statut Membre
     
    j'ai essayer avec la fonction RECHERCHEV mais ça ne fonctionne pas ou je m'y prend mal.
    aidez moi SVP
    0
  3. jof.27 Messages postés 80 Statut Membre
     
    c'est exactement ça je test ça de suite.
    merci
    0
  4. jof.27 Messages postés 80 Statut Membre
     
    la macro ne fonctionne pas je ne connais pas la raison.
    aidez moi SVP
    0
    1. WeaponEDGE
       
      Autant pour moi, sur la ligne :
      Nb_Ligne = Sheets(1).Cells(1000000, 8).End(xlUp).Row
      remplace 1000000 par 65536
      0
    2. jof.27 Messages postés 80 Statut Membre
       
      ok la macro fonctionne seulement il reporte la mauvaise valeur juste a modifier l'approche du zéro je penses. ce que je veut dire il copie bien la valeur mais cette valeur n'est pas celle de la ligne ou il y la valeur rechercher qui est zero ou le plus proche positif.
      ou dois je faire la modification?
      merci d'avance
      0
    3. WeaponEDGE
       
      La macro avait quelques petits soucis :
      celle là devrait mieux fonctionner

      Sub test()
      Nb_Ligne = Sheets(1).Cells(65536, 8).End(xlUp).Row
      For i = 14 To Nb_Ligne
      Resultat = Sheets(1).Cells(i, 8)

      If Resultat < 0 Then
      Resultat = Resultat * -1
      End If

      If Valeur_0 = "" Then
      Valeur_0 = Resultat
      Valeur_C = Sheets(1).Cells(i, 3)
      Else
      If Resultat < Valeur_0 Then
      Valeur_0 = Resultat
      Valeur_C = Sheets(1).Cells(i, 3)
      Ligne = i
      End If
      End If
      Next i

      Sheets(1).Cells(3, 5) = Valeur_C
      End Sub
      0
    4. jof.27 Messages postés 80 Statut Membre
       
      ok c'est ça mais juste la valeur proche de zéro doit être positive donc la par exemple il prend la valeur -0.18 et moi je voudrais qu'il prenne la valeur pareil mais positive 0.24.
      que dois-je modifier?
      merci votre aide.
      0
    5. WeaponEDGE
       
      Eh, il faut mieux s'exprimer :-)
      La valeur la plus proche de 0 c'est -0.18

      Si je comprend bien, tout ce qui est inférieur à 0 je laisse tomber c'est ça ?
      J'analyse que les montant compris entre 0 et l'infini. ?
      0