Le VBA appliqué à Excel, où l'art de découvrir des fonctions après 1 heure de codage

  • Initiateur de la discussion Initiateur de la discussion Odesta
  • 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 !

Odesta

XLDnaute Impliqué
Bonjour
Un post pour recueillir non pas des nouvelles fonctions, mais vos diverses déconvenues (qui font rire jaune)


Après une bonne heure de code pour faire un algo me premettant de déterminer quels connecteurs j'allais utiliser pour relirer deux boites :
Code:
        If trouve = True Then 'vérification OK
            'trouver les coordonnées des deux cadres
            'dégrouper les formes
            feuille_simu.Shapes("Groupe_" & tableau_UP(ligne, 2)).Ungroup
            feuille_simu.Shapes("Groupe_" & tableau_UP(indice_up_deb, 2)).Ungroup
            
            b = feuille_simu.Shapes("Rec" & tableau_UP(ligne, 2)).Top
            a = feuille_simu.Shapes("Rec" & tableau_UP(ligne, 2)).Left
            e = feuille_simu.Shapes("Rec" & tableau_UP(ligne, 2)).Height
            f = feuille_simu.Shapes("Rec" & tableau_UP(ligne, 2)).Width
            
            d = feuille_simu.Shapes("Rec" & tableau_UP(indice_up_deb, 2)).Top
            c = feuille_simu.Shapes("Rec" & tableau_UP(indice_up_deb, 2)).Left
            g = feuille_simu.Shapes("Rec" & tableau_UP(indice_up_deb, 2)).Height
            h = feuille_simu.Shapes("Rec" & tableau_UP(indice_up_deb, 2)).Width
            'algorythme des flèches : basée sur la distance la plus courte
            'if hauteur_begin >
'            1- rouge fin : (c – (a + f/2))² + (b-(d+g/2))²
'            2- rouge épais : (c+h/2 – (a + f/2))² + (b-(d+g))²
'            3- noir point : (c – (a + f))² + (b+e/2-(d+g/2))²
'            4- noir fin : (c+h/2 – (a + f))² + (b+e/2-d)²
'            5- noir épais : (c+h/2 – (a + f))² + (b+e/2-(d+g))²
'            6- bleu fin : (c – (a + f/2))² + (b+e-(d+g/2))²
'            7- bleu épais : (c+h/2 – (a + f/2))² + (b+e-d)²
            tableau_longueur_fleche(1) = (c - (a + f / 2)) ^ 2 + (b - (d + g / 2)) ^ 2
            tableau_longueur_fleche(2) = (c + h / 2 - (a + f / 2)) ^ 2 + (b - (d + g)) ^ 2
            tableau_longueur_fleche(3) = (c - (a + f)) ^ 2 + (b + e / 2 - (d + g / 2)) ^ 2
            tableau_longueur_fleche(4) = (c + h / 2 - (a + f)) ^ 2 + (b + e / 2 - d) ^ 2
            tableau_longueur_fleche(5) = (c + h / 2 - (a + f)) ^ 2 + (b + e / 2 - (d + g)) ^ 2
            tableau_longueur_fleche(6) = (c - (a + f / 2)) ^ 2 + (b + e - (d + g / 2)) ^ 2
            tableau_longueur_fleche(7) = (c + h / 2 - (a + f / 2)) ^ 2 + (b + e - d) ^ 2
            taille = tableau_longueur_fleche(1) 'initialisation : on cherche la plus courte
            For i = 1 To 7
                If taille > tableau_longueur_fleche(i) Then
                    taille = tableau_longueur_fleche(i)
                    choix_fleche = i
                End If
                
            Next
            'écriture des point d'encrage en fonction des cas
            'les points d'encrage sont 1 haut, 2 gauche, 3 bas, 4 droite.
            Select Case choix_fleche
                Case 1
                    encrage_deb = 1
                    encrage_fin = 4
                Case 2
                    encrage_deb = 1
                    encrage_fin = 3
                Case 3
                    encrage_deb = 2
                    encrage_fin = 4
                Case 4
                    encrage_deb = 2
                    encrage_fin = 1
                Case 5
                    encrage_deb = 2
                    encrage_fin = 3
                Case 6
                    encrage_deb = 3
                    encrage_fin = 4
                Case 7
                    encrage_deb = 3
                    encrage_fin = 1
                    
            End Select

            'inverser si la cible est à gauche de la source :
            If (a + f / 2) > (c + h / 2) Then
                   temp = encrage_deb
                   encrage_deb = encrage_fin
                   encrage_fin = temp
            End If

Mon oeil a tilté sur une petite phrase dans l'aide attribué aux connecteurs :

Utilisez la méthode RerouteConnections pour rechercher automatiquement le chemin le plus court entre deux formes reliées par le connecteur

Bon, je suis content, mon algo ne marchait pas, et je ne veux pas perdre encore 30 minutes à le décoder. donc "Suppr"...mais quand même : ZUT !




Bon App' !

Olivier
 
- 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

Discussions similaires

Réponses
4
Affichages
505
Réponses
3
Affichages
331
Réponses
1
Affichages
522
Réponses
22
Affichages
1 K
Réponses
5
Affichages
564
Retour