Structure conditionnelle gargantuèsque

Amandineuh

XLDnaute Nouveau
Salut à tous,

Je me suis lancé dans un exercice de structure conditionnelle qui est tout simplement atroce compte tenu de mes connaissances (mais soyez en sûr que j’y travaille durement :p). En plus du défi, il y a certaines choses que je désire faire et pour lesquelles j’ignore tout bonnement comment les mettre en place.

Je pense que mon « arbre » décisionnel est correct, mais il me manque quelques éléments pour finaliser mes intentions. J’ai joins un fichier pour ne pas paraître pour une folle dingue. Fichier qui est « fictif » mais pour lequel j’ai vérifié la robustesse des données ligne par ligne. Dans l’onglet « devrait » du classeur « APPRENDRE », j’ai remplie mon tableau à la main pour illustrer le résultat que j’aimerais avoir (je sais, je suis une fille exigeante :p)

Ce que je cherche à faire : Pour chaque « Numéro JOE » correspond plusieurs réservations fait auprès d’hôtels différents (chaque hôtel à sa propre structure de réservation). L’idée c’est de dispatcher les infos contenues dans la base de données (onglet 2 du classeur) pour pouvoir les ramener vers l’onglet 3 dans un tableau qui synthétise toutes ces informations. Mon fichier excel contient l’arbre décisionnel qui je crois est cohérent.

Une des subtilités c’est que si la colonne « annulation » contient la valeur « 1 » alors ca signifie que cette ligne (tout entier) doit écraser celle situé juste au dessus d’elle pour la remplacer. Une fois que les valeurs ont étaient envoyées dans le tableau, il n’y a aucune données qui se chevauche (superpose) pour un même « Numéro JOE». Ce qui permet de fusionner les lignes appartenant à un même « Numéro JOE » pour n’en avoir plus qu’une.

Je suis donc à la recherche de piste, d’idée, de conseil, et j’avoue non sans gêne que je n’ai jamais traitée de cas aussi monstrueux et je pense qu’avec un « bon coup de main », je pourrais l’adapter à des situations plus concrètes et surtout moduler ce cas à d’autres applications.
J’ai conscience de l’ampleur de la tâche, et par conséquent je remercierai par avance ceux qui auront plongés le nez même l’espace de quelques minutes dans ce marasme informatique.

Amandine ;)
 

Pièces jointes

  • APPRENDRE.xls
    93 KB · Affichages: 39

Amandineuh

XLDnaute Nouveau
Re : Structure conditionnelle gargantuèsque

J'avance un peu, j'ai pondu un code qui ne donne pour le moment aucun résultat (mais au moins je n'ai pas d'erreurs de syntaxe, c'est deja ca :D), je pense que c'est lié aux intitulés de ma boucles "for ... next"

Code:
Private Sub tri_conditionnel()
    
Dim W1 As Worksheet
Dim W2 As Worksheet
Dim i As Long
Dim DerniereLigne As Long
   

Set W1 = ThisWorkbook.Worksheets("résumé")
Set W2 = ThisWorkbook.Worksheets("base données")
DerniereLigne = Cells(Rows.Count, 1).End(xlUp).Row


With W2

    For i = 7 To DerniereLigne
         
    Select Case Cells(i, 2).Value
        
        Case Is = "Hotel1"
         
                If Cells(i, 3).Value = "non" Then
                        If Cells(i, 4).Value = "2p" Then
                             'problème de détection de la colonne non résolue
                             'doit aller lire le contenu d'une colonne qui va révler dans quel intitulé de colonne écrire une valeur conjointe
                        ElseIf Cells(i, 4).Value = "4p" Then
                             'problème de détection de la colonne non résolue
                             'doit aller lire le contenu d'une colonne qui va révler dans quel intitulé de colonne écrire une valeur conjointe
                        End If
                        
                ElseIf Cells(i, 3).Value <> "non" Then
                        If Cells(i, 4).Value = "2p" Then
                             'problème de détection de la colonne non résolue
                             'doit aller lire le contenu d'une colonne qui va révler dans quel intitulé de colonne écrire une valeur conjointe
                        ElseIf Cells(i, 4).Value = "4p" Then
                             'problème de détection de la colonne non résolue
                             'doit aller lire le contenu d'une colonne qui va révler dans quel intitulé de colonne écrire une valeur conjointe
                        End If
                        
                End If
                
        Case Is = "Hotel2"
        
                If Cells(i, 3).Value = "non" Then
                
                        If Cells(i, 4).Value = "2p" Then
                        
                                Select Case Cells(i, 7)
                                
                                    Case Is = "55"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 65)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 66)
                                    Case Is = "66"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 65)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 67)
                                    Case Is = "77"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 61)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 68)
                                 
                                 End Select
                                 
                        ElseIf Cells(i, 4).Value = "4p" Then
                        
                                Select Case Cells(i, 7)
                                
                                    Case Is = "55"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 61)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 62)
                                    Case Is = "66"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 61)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 63)
                                    Case Is = "77"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 61)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 64)
                                     
                                 End Select
                                 
                        End If
                 
                    
                 ElseIf Cells(i, 3).vallue <> "non" Then
                
                        If Cells(i, 4).Value = "2p" Then
                
                               Select Case Cells(i, 7)
                                
                                    Case Is = "55"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 73)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 74)
                                    Case Is = "66"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 73)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 75)
                                    Case Is = "77"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 73)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 76)
                                 
                                 End Select
                                 
                        ElseIf Cells(i, 4).Value = "4p" Then
                        
                                Select Case Cells(i, 7)
                                
                                    Case Is = "55"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 69)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 70)
                                    Case Is = "66"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 69)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 71)
                                    Case Is = "77"
                                     Cells(i, 6).Copy Destination:=W1.Cells(i, 69)
                                     Cells(i, 9).Copy Destination:=W1.Cells(i, 72)
                                 
                                 End Select
                                 
                         End If
                    End If
                    
        Case Is = "Hotel3" 'je met ca de côté pour le moment puisque c'est le même traitement que "Hotel2"
        
        Case Is = "Hotel4" 'idem
        
        Case Is = "Hotel5" 'idem
        
        Case Is = "Hotel6"  'idem
        
        End Select

Si quelqu'un à une idée la dessus, je rétribue les efforts en bisous ! :p
Amandine.
 

Amandineuh

XLDnaute Nouveau
Re : Structure conditionnelle gargantuèsque

J'ai pas vraiment réfléchie (comment ça "comme une fille quoi" ? ), disons que je me suis dit que c'était un problème de tri conditionnel et que ca serait mieux de faire les choses en bien.

Et puis j’essaie de me servir de ce que vous m'avez appris les loulous :)

Et puis d'ailleurs je suis toute contente de pouvoir faire des conversions d'unité à tout va grâce à vous. Du coup je m'attaque à un problème plus (beaucoup!) costaud. J'y travaille demain toute la journée, j'ai toujours des difficulté sur les déplacements et sélections range et d'ailleurs tu t'en ai rendu compte apparemment. :eek:

Merci d'être passé en tout cas (loulou) :p
Amandine.
 

Staple1600

XLDnaute Barbatruc
Re : Structure conditionnelle gargantuèsque

Re

Je viens de relire plus attentivement ton premier message
et à première vue et comme tu le dis toi-même
Je suis donc à la recherche de piste, d’idée, de conseil,

Je verrais bien sur ce coup l'emploi du filtre élaboré (ou AdvancedFilter en VBA)

Je ne puis t'en dire plus car je vais de ce pas prendre ma douche (il me reste du sable entre les orteils) puis me glisser sous les draps, attendre Morphée en écoutant quelques musiques d'avant Justin.

PS: Tu trouveras des exemples d'emploi du filtre élaboré en VBA (surtout si tu cherches des discussions avec mon identifiant exact -> mode recherche avancée du forum)
 

Amandineuh

XLDnaute Nouveau
Re : Structure conditionnelle gargantuèsque

Je suis dégoutée, j'ai payé un soit-disant prof 28 euros de l'heure pour qu'il m'apprend à gérer ce genre de structure conditionnelle.
Mais j'ai très vite vu qu'il était limité (sans oser lui dire oui ...), et le pire c'est qu'il me fait revenir demain pour 4 heures de plus (total 8h30), je vous laisse imaginer à quel point j'me sent bête ... :(
 

Discussions similaires

Statistiques des forums

Discussions
312 106
Messages
2 085 352
Membres
102 871
dernier inscrit
Maïmanko