Macro visionnaire

  • Initiateur de la discussion steph
  • Date de début
S

steph

Guest
Bonjour forum,

Voici mon probleme: j' 4 colonnes A, B, C et D, cette derniere etant fonction des 3 1eres.
Je voudrai 'guerir' certaines cellules de ma colonne D qui m'affiche des messages d'erreur en changeant les valeurs de ma colonne B.
Je voudrai connaitre la valeur la plus proche possible de B100 par ex. pour que D100 ne soit plus #nombre#.

Je vous joint un fichier pour plus de clarte.
Merci pour tous les renseignements que vous pourrez m'apporter. [file name=forum_20050524175142.zip size=9572]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/forum_20050524175142.zip[/file]
 

Pièces jointes

  • forum_20050524175142.zip
    9.3 KB · Affichages: 6

Hellboy

XLDnaute Accro
Bonjour steph

Je ne suis pas expext en math, mais ce que j,ai trouvé pour ton problème, c'est que la valeur que la fonction ASIN doit calculer doit être entre -1 et 1 selon l'aide ds Excel. Ce qui n'est pas le cas ds les cellules ou tu as des erreurs.

B)
 
S

steph

Guest
Bonjour philippe,

Tu as tout a fait raison, ma colonne D ASIN(>1) me renvoie des non-valeurs. C'est pour ca que j'aimerai reduire ce nombre de >1 a <1 en ne jouant que sur la colonne B.
Comment automatiser une macro (ou autre chose) pour que je puisse trouver la valeur B.. a partir de laquelle j'obtienne: D ASIN(<1).
Je peux le faire par diminution successive a chaque celllule mais j'en ai enormement...
Il faudrait que je trouve une formle du type: tant que cellule D pas de nombre, je diminue valeur B et cela appliquable a toute la colonne.
Pas evident...
 

Hellboy

XLDnaute Accro
Bonjour steph

Je ne sais pas si tu es habitué avec les macros ,mais voici ce qui va faire l'affaire. C'est un peu simplet, mais comme ont dit ça fait la job.

En gros lorsque la macro trouve une cellule qui a une eereur ds la colonne d, elle commence a soustraire 0.001 a la valeur de la cellule de la meme ligne en colonne B jusqu'à ce qu'il n'y est plus de valeur erreur en D.

Code:
Application.ScreenUpdating = False
   For Each cell In Range(Cells(6, 4), Cells(Cells(65536, 4).End(xlUp).Row, 4))
        With cell
        While CStr(cell) = 'Erreur 2036'
              Cells(.Row, 2) = Cells(.Row, 2) - 0.001
              Application.StatusBar = 'Ligne ' & .Row & '    Valeur ---> ' & Cells(.Row, 2)
        Wend
        End With
   Next cell

Si tu trouve ça trop long tu peux augmenter le pas de soustraction.

Message édité par: Hellboy, à: 24/05/2005 19:36
 
S

steph

Guest
Merci Philippe,


Ta macro est impeccable...ca fonctionne bien!!
Une petite question subsidiaire:
Qe faudrait-il changer a la macro pour que elle ne me baisse pas les valeur de 0.001 petit a petit mais qu'elle aille chercher successivement x+0.1, x-0.1,x+0.2,x-0.2...et ainsi de suite...
Si il faut reconstruire la macro ce n'est pas la peine mais c juste au cas ou des valeurs superieures atteindraient une cible avant les valeurs inferieures....
Merci beaucoup en tout cas...
Bonne soiree!
 

Hellboy

XLDnaute Accro
Bonjour steph

Voici ce qu'il faudrait faire ;)
Code:
Application.ScreenUpdating = False
   For Each cell In Range(Cells(6, 4), Cells(Cells(65536, 4).End(xlUp).Row, 4))
        With cell
        Inc = 0.1
        Do Until CStr(cell) <> 'Erreur 2036'
              Cells(.Row, 2) = Cells(.Row, 2) - Inc
              Application.StatusBar = 'Ligne ' & .Row & '    Valeur ---> ' & Cells(.Row, 2)
              If CStr(cell) = 'Erreur 2036' Then
                 Cells(.Row, 2) = Cells(.Row, 2) + (Inc * 2)
                 If CStr(cell) = 'Erreur 2036' Then
                    Cells(.Row, 2) = Cells(.Row, 2) - Inc
                    Application.StatusBar = 'Ligne ' & .Row & '    Valeur ---> ' & Cells(.Row, 2)
                 Else
                    Exit Do
                 End If
              Else
                 Exit Do
              End If
              Inc = Inc + 0.01
        Loop
        End With
   Next cell

Au plaisir !
 
S

steph

Guest
Salut Philippe,

Un petit probleme de compilation est venu entacher cette belle macro:
le FALSE du debut: Instruction incorrecte a l'exterieure d'une procedure....j'ai essaye de changer qques trucs mais bon, ca n'a pas servi a grand chose!
Comment regler ce probleme?...
Bonne soiree a toi
 

Hellboy

XLDnaute Accro
Bonsoir stef et forum

Je ne comprend pas, moi ça marche super bien.

Je t'envois le fichier avec la macro et tu m'en donne des nouvelles. Si tu as encore des prob. dis moi a quel endroit s'arrete le code s.v.p

merci! [file name=forum_2.zip size=15198]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/forum_2.zip[/file]

Message édité par: Hellboy, à: 26/05/2005 21:54
 

Pièces jointes

  • forum_2.zip
    14.8 KB · Affichages: 13
S

steph

Guest
Salut Philippe,

Je suis quelque peu trouble par le fait que ta macro marche...et en regardant de plus pres, je crois que mon ordi plante car je n'arrive meme pas a refaire marcher ton ancienne macro...Peux tu regarder le fichier que je t'envoies et me dire si ton application n'as pas de souci sur celui-ci...?
J'ai du mal a comprendre....je reregarde, si tu peux voir un souci...?
Merci d'avance...
 

Statistiques des forums

Discussions
314 222
Messages
2 107 470
Membres
109 836
dernier inscrit
SophieL16