récupérer des chiffres dans une expression (vbaexcel)

récupérer des chiffres dans une expression (vbaexcel) - VB/VBA/VBS - Programmation

Marsh Posté le 11-04-2006 à 11:46:34    

Je veux passer de "159A" à "15" et de "717Z" à "71".
Je veux garder les 2 premiers chiffres uniquement.
Dans une cellule j'ai "159A" et dans une autre je veux arriver à "15".
Comment faire avec une macro en vba ??


Message édité par rip324 le 11-04-2006 à 11:55:08
Reply

Marsh Posté le 11-04-2006 à 11:46:34   

Reply

Marsh Posté le 11-04-2006 à 12:22:34    

tu as la fonction mid. elle va récuperer un bout de ton exspression
mid(ton expression, a partir de quel caractère on extrait, longueur à extraire)
ex : mid("bonjour", 3,2) donnera "nj"
cellule1 = 159A
cellule2 contiendra les 2 1er caractère de cellule1
dans ton cas cellule2.value = mid(cellule1.value,1,2)

Reply

Marsh Posté le 11-04-2006 à 14:29:06    

j'ai fais ce programme mais le pb c'est que dans ma liste j'ai aussi des chiffres comme "15" ou "75" avec 2 untés seulement, et je veux qu'il reste normaux ceux là.
Or avec ce programme ça les enlève et ça décale ma seconde liste.
ex
liste1   985r  865t   45  856f  15  897f
liste2   98     86     85    89
 

Sub gauche()
Range("AC2" ).Select
Range("AB2:AB15" ).ClearContents
Do While UCase(ActiveCell) <> ""
cpt = 0
    Do While UCase(Range("AB2" ).Offset(cpt, 0)) <> "" And UCase(Range("AB2" ).Offset(cpt, 0)) <> UCase(ActiveCell)
    cpt = cpt + 1
    Loop
    If Range("AB2" ).Offset(cpt, 0) = "" Then
       Range("AB2" ).Offset(cpt, 0) = Left(ActiveCell, 2)
    End If
    Selection.Offset(1, 0).Select
Loop
End Sub


 
remarque : même avec ton "bout" de programme ça me fait la même chose.


Message édité par rip324 le 11-04-2006 à 14:33:40
Reply

Marsh Posté le 11-04-2006 à 14:44:02    

Salut,
 
Vite fait en passant, tout simplement en utilisant un left. Je ne sais pas trop comment se présente tes données mais si tu as en colonne A par exemple ta liste1 et que tu veux mettre en colonne B seulement les 2 premiers caractères, un code comme celui-ci fait l'affaire :

Code :
  1. Sub essai()
  2. Dim i As Integer
  3. For i = 1 To Range("A65536" ).End(xlUp).Row
  4.     Cells(i, 2).Value = Left(Cells(i, 1).Value, 2)
  5. Next i
  6. End Sub


 
@+
 
 

Reply

Marsh Posté le 11-04-2006 à 14:50:28    

J'ai réussi en fait :
 

Sub gauche()
Range("AC2" ).Select
Range("AB2:AB190" ).ClearContents
Do While UCase(ActiveCell) <> ""
cpt = 0
    Do While UCase(Range("AB2" ).Offset(cpt, 0)) <> ""
    cpt = cpt + 1
    Loop
    If Range("AB2" ).Offset(cpt, 0) = "" Then
       Range("AB2" ).Offset(cpt, 0) = Left(ActiveCell, 2)
    End If
    Selection.Offset(1, 0).Select
Loop
End Sub


 
merci tt le monde ++

Reply

Sujets relatifs:

Leave a Replay

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