Recupération d'une partie de cellule - Excel

Fermé
mRF - 23 janv. 2008 à 15:12
 mRF - 24 janv. 2008 à 11:28
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
A voir également:

12 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
23 janv. 2008 à 15:41
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
Oui je confirme elle est toujours de ce type la (xx, yy,zzz). Je vais tester ta solution.
Merci d'avance
0
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
23 janv. 2008 à 15:56
test = split([C2], ",")

semaine = test(1)
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
23 janv. 2008 à 16:31
for i = 1 to rangeLimit
test = split(["C" & i], ",")
semaine = test(1)
next
0
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
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
23 janv. 2008 à 17:00
"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
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
Si quelqu'un voit comment je peux faire, sa m'aiderai beaucoup.
0
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
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