Mise en forme VBA

Bonjour,

J'ai un fichier EXCEL avec 3 feuilles :

- OUTILS : avec un tableau à 3 colonnes - Nom outil / S0 / BU

- CARTOGRAPHIE : permet d'établir une hierarchie entre les S0 et BU (cf liste déroulante conditionnelle dans feuille OUTILS)

- OBJECTIF : c'est ce que je souhaite réaliser pour la mise en forme du tableau

J'avais déjà posé une question sur ce forum pour mettre en forme ce tableau et j'avais eu une réponse avec power query, cependant mes besoins ont changé depuis. Je pense qu'il est impossible de réaliser la mise en forme que je souhaite avec power query et qu'il faut passer en VBA.

J'ai déjà ecris deux procédures/fonctions VBA dans la feuille Cartographie qui permet de savoir le nombre d'occurences des champs dans le tableau en fonction de la colonne du tableau OUTILS.

J'aimerais pouvoir mettre en polace la fonction qui vient mettre en forme le tableau comme souhaité mais je ne sais pas vraiment par ou commencer.

Je serais ravi d'avoir votre aide

Arnaud DA SILVA

10carto-excel.xlsm (36.25 Ko)

Bonjour,

Voici une proposition très simple par sa conception (pas de dictionnaire)

Cdlt

Bonjour,

Merci pour votre réponse.

Lorsqu'il y plusieurs éléments pour un BO, par exemple pour BB2, cela ne s'incrémente pas au bon endroit. Je ne sais pas si c'est clair, je vous ai laisse "l'erreur" dans le fichier ci-joint. J'espère être clair, dites moi sinon.

Cordialement

Bonjour arnauddasilva, Arturo83,

Une autre proposition qui me semble être conforme au résultat souhaité. Voir procédure MEF dans module1) appelée par le bouton "Mise en forme" sur la feuille "Objectif".

7carto-excel2.xlsm (52.89 Ko)

Cdlt,

Cylfo

Bonjour,

Merci pour cette réponse.

L'avez-vous codez en "one shot" ou vs vs êtes aidé d'un éditeur de code ?

De plus, il y a un problème d'affichage (cf fichier) avec le quadrillage, je ne sais pas si cela peut être résolu.

Excellent travail sinon, je vous remercie encore.

Arnaud DA SILVA

7carto-excel2.xlsm (47.76 Ko)

Bonjour,

Le bug est corrigé (erreur de variable nNbLig au lieu de nNbLigObj dans les boucles FOR pour la fusion des cellules et le dessin des cadres).

Pour le codage, j'utilise parfois l'enregistreur de macro comme là pour le dessin des cadres car c'est plus rapide de modifier (*) le code généré que de l'écrire en totalité.

(*) : Une fois le code généré, à minima il est faut remplacer les xxx.Select suivi de Selection.yyy par les références adéquates aux objets ainsi que les références aux plages sélectionnées. Mais cela reste très pratique.

Cdlt,

Cylfo

15carto-excel4.xlsm (45.74 Ko)

Bonjour,

Très bien je vous remercie. je vais ajouter le noircissement des cases vides pour plus de visibilité et ca sera top.

Bien cordialement

Le plus simple c'est de l'ajouter dans le passage 2 : fusion des cellules.

   ' Passage 2 : on fusionne colonne par colonne les donnŽes non vides en ligne
   With wsObj
      nNbLigObj = .Range("A2").End(xlDown).Row
      For nICol = 1 To 1 + (nNbBUSup * 2)
         cValPrec = ""
         nLigDeb = 2
         For nILig = 2 To nNbLigObj
            ' Noircissement des cellules vides
            If .Cells(nILig, nICol).Value = "" Then .Cells(nILig, nICol).Interior.Color = 0

            If .Cells(nILig, nICol).Value <> cValPrec Then
               If nLigDeb > 0 And nLigDeb < nILig And .Cells(nLigDeb, nICol).Value <> "" Then Range(Cells(nLigDeb, nICol), Cells(nILig - 1, nICol)).Merge

Bonjour,

Hier la macro fonctionnait très bien mais la ça ne fonctionne plus quand je re-telecharge le fichier. Est-ce pareil pour vous ?

Cordialement,

Arnaud DA SILVA

Bonjour,

Non, elle fonctionne toujours. Il y a un message, d'avertissement ou d'erreur ?

Cdlt,

Cylfo

Rechercher des sujets similaires à "mise forme vba"