A voir également:
- Recupération d'une partie de cellule - Excel
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Verrouiller cellule excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
12 réponses
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
23 janv. 2008 à 15:41
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
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
Oui je confirme elle est toujours de ce type la (xx, yy,zzz). Je vais tester ta solution.
Merci d'avance
Merci d'avance
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
23 janv. 2008 à 15:56
test = split([C2], ",")
semaine = test(1)
semaine = test(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...
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...
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?
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
23 janv. 2008 à 16:31
for i = 1 to rangeLimit
test = split(["C" & i], ",")
semaine = test(1)
next
test = split(["C" & i], ",")
semaine = test(1)
next
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.
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.
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
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
:((
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
:((
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.
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...
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...