Recupération d'une partie de cellule - Excel

mRF -  
 mRF -
Bonjour,

Voila je vous présente ma difficulté :

Ma cellule est composé comme ceci : 07,01,012
Je dois récuperer la valeur 01 dans cette exemple.

test = Columns("C").Find(numSemaine, After:=[C2]).Value

J'ai essayer ceci avec différentes variantes mais impossible de récuperer la bonne valeur...

Si quelqu'un peut m'aider je suis preneur.

Cordialement mRF
Configuration: Windows XP
Firefox 2.0.0.11

12 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjiour,

    tout dépend de la régularité du format de ta valeur.
    si elle est tjs du format xx,yy,zzz
    test = Mid([C2].Value, 3, 2)

    si xx peut varier en longueur il faut rechercher la position de la , et prendre 2 car. à partir de 1 car. plus loin:
    test = Mid([C2].Value, InStr([C2].Value, ",") + 1, 2)

    si la longueur de yy peut aussi varier, sur le même principe il faudrait rechercher la position de la 2nde , avec un autre instr() et calculer la longueur à extraire

    eric
    0
  2. mRF
     
    Oui je confirme elle est toujours de ce type la (xx, yy,zzz). Je vais tester ta solution.
    Merci d'avance
    0
  3. phil232 Messages postés 610 Statut Membre 178
     
    test = split([C2], ",")

    semaine = test(1)
    0
  4. mRF
     
    For Each Rw In Selection.Rows
    test = Mid([C2].Value, 3, 2)
    'MsgBox test

    If Val(test) = Val(numSemaine) Then
    If Val(Rw.Cells(1, 5).Value) = Val(numDCS) Then
    Rw.EntireRow.Copy Destination:=Worksheets("resultat").Cells(ligne + 2, 1)
    ligne = ligne + 1
    End If
    End If
    Next Rw

    Voici mon code. Auparavant j'effectue une selection sur une feuille. Je saisie un numéro semaine (qui correspond au 01 dans cette cellule ( 07,01,012 )) ainsi qu'un numéro de bureau.

    Lorsque les conditions sont respectées, je copie les lignes apropriées sur une autre feuille (resultat).
    J'espère que mes explications sont claires...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mRF
     
    En effet phil, ta solution marche pour une cellule mais je ne vois pas comment je peux l'adapter à toute ma selection... Quelqu'un aurait il une idée?
    0
  7. phil232 Messages postés 610 Statut Membre 178
     
    for i = 1 to rangeLimit
    test = split(["C" & i], ",")
    semaine = test(1)
    next
    0
  8. mRF
     
    Humm, cela ne marche pas. La boucle tourne en non stop. J'ai essayé d'afficher semaine, aucun résultat. Voici le code que jai esayer :

    For Each Rw In Selection.Rows
    For i = 1 To rangeLimit
    test = Split(["C" & i], ",")
    semaine = test(1)

    If semaine = Val(numSemaine) Then
    If Val(Rw.Cells(1, 5).Value) = Val(numDCS) Then
    Rw.EntireRow.Copy Destination:=Worksheets("resultat").Cells(ligne + 2, 1)
    ligne = ligne + 1
    End If
    End If
    Next
    Next Rw

    J'ai essayer de mettre le next avant le 1er if également.
    0
  9. phil232 Messages postés 610 Statut Membre 178
     
    "for i = 1 to rangeLimit "

    mais punaise je ne te fais pas tout coupé et arrangé sur une tablette en or

    reflechis un peu. je ne connais ni la limite de ton range ni comment tu l'as défini (selection, cellule, row, column...), c'est toi qui dois la mettre. il ne suffit pas de foutre une variable rangeLimit dans le code pour avoir la limite du range

    puis tu boucle sur les rows, logiquement c'est donc pas "C" & i car i c'est les colonnes :((
    prends le manuel est informe toi
    faut peut-être essayer range(i, 1) au lieu de C1, C2 que sais-je

    :((
    0
  10. mRF
     
    Bah écoute, c'est pas avec l'aide excel que je vais aller loin mais bon, j'ai effectuer plusieurs tests mais je n'ai pas trouver la bonne solution. Merci quand même.
    0
  11. mRF
     
    Si quelqu'un voit comment je peux faire, sa m'aiderai beaucoup.
    0
  12. mRF
     
    Je viens de trouver une autre solution : Je vais lancer, au démarage de mon classeur Excel, la copie du numSemaine dans une autre cellule.

    Sheets("recap").Select
    For i = 1 To 200

    test = Split(["C" & i+2], ",")
    numS = test(1)

    If Val(numS) <> "" Then
    MsgBox numS
    Worksheets("recap").Cells(i, 4).Value = Val(numS)
    End If
    Next

    Voici mon code... Sa ne marche pas, il y a une erreur au niveau de la 3ème ligne...
    0
  13. mRF
     
    C'est une erreur d'incompatibilité à cette ligne : test = Split(["C" & i+2], ",")
    Je dois déclarer test et numS de quel type!?

    Je débute...Merci de votre compréhension.

    Cordialement mRF
    0