Recupération d'une partie de cellule - Excel

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. Contributeur
    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
    1. Oui je confirme elle est toujours de ce type la (xx, yy,zzz). Je vais tester ta solution.
      Merci d'avance
      0
      1. test = split([C2], ",")

        semaine = test(1)
        0
        1. 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
          1. 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
            1. for i = 1 to rangeLimit
              test = split(["C" & i], ",")
              semaine = test(1)
              next
              0
              1. 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
                1. "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
                  1. 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
                    1. Si quelqu'un voit comment je peux faire, sa m'aiderai beaucoup.
                      0
                      1. 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
                        1. 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