[Excel] Condition sur liste variable

Fermé
Jodko - 13 août 2009 à 10:06
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 13 août 2009 à 13:26
Bonjour,

Je voudrais transformer une liste qui se présente sous la forme suivante :

Tache1
Ressource1
Ressource2
Tache2
Ressource1
Ressource3
Tache3
Ressource1
Ressource2
Ressource4

[...]

Pour la transformer de manière à décaler les ressources sur la meme ligne mais dans la colonne d'à coté.

Bien évidemment, le nombre de ressource est aléatoire.

Pour le moment, j'ai fait une boucle If activecell.value = "Ressource1" Or Activecell.Value = "Ressource2" etc.

Le problème, c'est que je dois modifier la macro à chaque fois qu'une nouvelle ressource apparait, et qu'en plus, la liste est longue comme un jour sans pain.

Je voulais savoir s'il était possible de mettre une condition du type If Activecell.value "appartient" à un tableau.

Merci de votre aide.


Jodko.
A voir également:

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
13 août 2009 à 11:15
SAlut,
Dans un cas comme celui-ci je ferais une boucle comme ceci :
If Left(ActiveCell,5) = Resso Then
0
En fait, j'ai mis "RessourceX" pour faire simple et générique, mais les codes ressources sont des accronymes tout ce qu'il y a de plus barbares...

Je ne peux donc pas faire ce que tu proposes.


Jodko.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
13 août 2009 à 13:26
J'ai "bricolé" ce code (à adapter):

Sheets("Feuil1").Range("A1").Select 'te place sur la première cellule du fichier à "trier"
Do While ActiveCell <> ""
With Sheets("Feuil2").Range("A1:A3") ' à remplacer par le tableau récapitulatif de tes "ressources"
For i = 1 To 3 'si tu as 3 ressources dans ton tableau
If ActiveCell = .Cells(i, 1) Then
ActiveCell.Offset(0, 1) = ActiveCell
ActiveCell = ""
End If
Next i
End With
ActiveCell.Offset(1, 0).Select
Loop

0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
13 août 2009 à 12:50
Je suppose que "tache1" etc sont également des noms barbares?
0
Effectivement !


Jodko.
0

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

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
13 août 2009 à 13:12
Tu dis que :
Je voulais savoir s'il était possible de mettre une condition du type If Activecell.value "appartient" à un tableau.
donc tes valeurs "ressources" sont toutes dans un tableau?
Si oui, il faudrait passer par recherchev du style
If activeCell = RECHERCHEV(ActiveCell,tableau,1,FALSE) Then ' la syntaxe n'est pas correcte mais l'idée est là... si la cellule active est égale à sa propre recherchev donc appartient bien au tableau..... A creuser.
0