Problème d'intervalles particuliers

  • Initiateur de la discussion Initiateur de la discussion Top Gun
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

Top Gun

Guest
Rebonjour,

Je reviens pour un autre thème,

Un jour on doit parcourir un trajet qui part d'un point A vers un autre point et retour en A
Un autre jour, on part de A, on passe par plusieurs points pour arriver en un dernier point pour ce jour, soit F, le lendemain, on repart de F et à la fin du jour on revient en A.

A chaque fois que l'on part ou que l'on arrive en A, une indemnité est allouée, c'est à dire que dans le premier cas on reçoit 2 indemnités, car le même jour on est passé 2 fois en A. Le deuxième jour, on ne reçoit qu'une seule indemnité car on n'est passé qu'une fois en A au départ et que l'on n'y est pas revenu.

Je joins un fichier pour illustrer.

Comment dois-je faire pour automatiser le nombre d'indemnités par jour, ou trajets en colonne C, en fonction des parcours inscrits dans la colonne B de mon fichier.

Merci d'avance. [file name=Trajets.zip size=2998]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Trajets.zip[/file]
 

Pièces jointes

BOnjour

en attendant les réponses par formule, une solution VBA par fonction personnalisée.


Public Function nombredeA(cellule As Range)
Dim i As Byte

For i = 1 To Len(cellule)
        nombredeA = nombredeA - (Mid(cellule, i, 1) = 'A')
Next i
End Function


salut [file name=Trajets_20060527121253.zip size=8045]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Trajets_20060527121253.zip[/file]
 

Pièces jointes

Rebonjour,

Je confirme que la suite A B C D se trouve dans la même cellule.

En fait, j'avais simplifié le problème, car voici comment ça se présente en vrai:

Les villes sont déterminées par des trigrammes, en particulier les aéroports. De ce fait, si on part de CDG ( Roissy CDG) pour aller à MRS (Marseille) et retour à CDG le même jour, ceci donne: CDG MRS CDG dans la même cellule. Dans ce cas il y a une indemnité de transport pour aller à CDG depuis le domicile et une autre le soir du même jour pour y revenir. Ceci en fait 2 le même jour.

Mais si on fait CDG MRS BOD ( Bordeaux) et qu'on y reste le soir, il n'y aplus qu'une seule indemnité pour le matin puiqu'on ne revient pas au point de départ.

Enfin, pour plus de précision, les groupes de trigrammes peuvent être plus longs CDG MRS BOD SXB BOD CDG avec SXB ( Strasbourg). Ces ensembles sont les résultats de concaténations pour information.

J'espère que tout ceci est plus explicite. Merci d'avance.
 
Bonjour à tous

On peut peut-être tricher en se disant que si sur un trajet la ville de départ et la ville d'arrivée sont les mêmes alors il y a deux indemnités, sinon une seule.

Soit en B2 un trajet.
En supposant que les villes sont séparées par au moins un espace :
CHERCHE(' ';B2)-1)
devrait donner la position de ce premier espace et donc donner la longueur de la première chaîne de caractères +1. Chaîne correspondante à la ville de départ.

GAUCHE(B2;CHERCHE(' ';B2)-1)
devrait extraire le nom de la ville de départ

DROITE(B2;CHERCHE(' ';B2)-1)
la ville d'arrivée

Au bilan, si ces 2 chaînes sont identiques 2 sinon 1 (indemnités).
=SI(GAUCHE(B2;CHERCHE(' ';B2)-1)=DROITE(B2;CHERCHE(' ';B2)-1);2;1)

Au revoir à bientôt
 
Ave,

''...=SI(GAUCHE(B2;CHERCHE(' ';B2)-1)=DROITE(B2;CHERCHE(' ';B2)-1);2;1)...''

Inconvénient possible...
Exemple avec en B2 la chaîne suivante : A B C AA

Ta formule va renvoyer 2 au lieu de 1 (départ et arrivée différents)

AV [aaa]
 
Bonjour Tout le monde,

Juste pour le fun et parce que c'est Dimanche, fonction utilisant les 'REGULAR EXPRESSIONS'...

Function compterCDG(parcours As String)
' la bibliothèque Microsoft VBSCRIPT REGULAR EXPRESSIONS 5.5 doit être activée
Dim reg As VBScript_RegExp_55.RegExp
Dim mot As VBScript_RegExp_55.Match
Dim texte As VBScript_RegExp_55.MatchCollection


Set reg = New VBScript_RegExp_55.RegExp
reg.Global = True
reg.Pattern = 'CDG'

Set texte = reg.Execute(parcours)
For Each mot In texte
compterCDG = compterCDG + 1
Next mot

End Function
 
Bonjour à tous

Juste un petit mot pour AV :

Il n'y a pas d'inconvénient à essayer une formule, avec un test, ce qui permet de constater que ma formule prend en compte la longueur de la chaîne. Les 2 chaînes doivent donc impérativement être identique.
A B C AA = 1

Au revoir, à bientôt
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
819
Retour