Petite routine [Excel]

Petite routine [Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 12-11-2008 à 09:43:25    

Bonjour,  
 
Dans un document excel, les lignes successives d'une même colonne peuvent présenter ou non les dimensions d'une plaque de matière sous la forme suivante :  
 
1500 X 1000 X 30  
 
Je souhaiterai établir une petite routine permettant de calculer le volume de ces plaques lorsque le format dans la ligne est similaire à celui là.  
 
En français :  
 
Pour i 1:100  
 
Si cells(i,A) contient "X" alors  
 
cells(i,B) doit prendre la valeur 1500  
cells(i,C) doit prendre la valeur 1000  
cells(i,D) doit prendre la valeur 30  
 
cells(i,E) = cells(i,B) x cells(i,C) x cells(i,D)  
 
next i  
 
Pouvez-vous m'aider à mettre cela en place ?  
 
 
merci d'avance
 
 
pour faire simple, les lignes successives sont de ce type :  
 
1500 X 1000 X 30  
500 X 200 X 10  
1500 X 500 X 20  
plaque ep10  
tube PHI50  
500 X 500 X 15  
 
Je veux donc avoir un résultat du type :  
 
1500   1000   30    4.5E7  
500     200    10    1E6  
1500   500     20    1.5E7  
"VIDE"  
"VIDE"  
500    500     15     3.75E6


Message édité par chacal gp le 12-11-2008 à 09:43:57
Reply

Marsh Posté le 12-11-2008 à 09:43:25   

Reply

Marsh Posté le 12-11-2008 à 09:50:51    

Voici les fonctions qui vont t'aider :
 
SI(condition, sivrai, sifaux)
CHERCHE(texte_cherché, chaine_source, num_départ) => indique la position d'une chaine de caractère dans une autre
STXT(chaine_source, num_départ, nombre_car) => renvoie une sous-chaine
 
Pour le volume, je pense que tu y arriveras... non ? :)
 
Voilou,... le plus "difficile" finalement reste à fixer la condition pour dire si oui ou non c'est un format "L x l x H"... la recherche de 2 X non contigus me semblent le mieux pour ça)
 
Pour la "colonne", tu étends juste les formules de ta première ligne sur toute ta colonne, et voilà; pas besoin de "boucle" ou qq chose comme ça.


Message édité par Ptit loup le 12-11-2008 à 09:52:07
Reply

Marsh Posté le 12-11-2008 à 17:28:30    

bonjour,
Une tite macro ?
 
Sub SEP()
For Each o In Selection
v = Split(Trim(o), " X " )
k = UBound(v)
  If k = 2 Then
    For i = 1 To 3
      o.Offset(, i) = v(i - 1)
    Next
  o.Offset(, 4) = v(0) * v(1) * v(2)
  End If
Erase v
Next
End Sub
 
Nota : pour simplifier...  :D  la macro travaille sur la sélection courante (et non pas sur les lignes 1 à 100)  
A+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed