Récupération de données selon couleur texte

Si j ai bien compris je peux pas l utiliser comme tel ?

Ce n'est pas tout à fait ça. N'ayant fait aucun test donc pas de débogage, tu courrais simplement le risque de voir l'exécution se planter au premier lancement, sans savoir quoi faire...

On considère que le débogage fait partie de la programmation, soit qu'un code nouvellement écrit ne peut être exempt d'erreur (et s'il le paraît on serait tenté de chercher l'erreur cachée... ! ). La situation normale est d'avoir des erreurs : erreurs de compilation d'abord avant qu'il accepte de s'exécuter, puis erreurs d'exécution, les possibilités d'erreurs étant nombreuses et tiennent à peu de choses. La plupart se règlent rapidement (faute de frappe sur un mot-clé, syntaxe élémentaire, virgule manquante ou en trop, etc.) D'autres réclament un peu plus d'attention, notamment s'il s'agit d'erreurs Excel (les erreurs 1004), hormis quelques classiques qui doivent tenir à des bogues non rectifiés par Microsoft, qu'on connait pour la plupart..., mais il y en a de nombreuses possibles, et la ligne où elles se produisent n'est pas toujours là où il faut chercher...

Enfin, quand tout finit par se dérouler sans heurt, il reste à vérifier que le résultat obtenu est bien celui attendu. Ça on le laisse en général au demandeur qui est le mieux à même pour détecter si le résultat est bien celui qu'il souhaite (d'autant qu'il peut toujours y avoir une mauvaise compréhension au départ, et on peut fort bien avoir codé autre chose que ce qu'il demandait !)

Pour cette procédure, aucune erreur apparente ! J'ai tout de même fait quelques rectifications par rapport au code que j'ai déjà donné : une majuscule manquante sur un intitulé, les feuilles ajoutées qui se plaçaient avant Feuil1 car je n'avais pas imposé d'emplacement (elles iront maintenant se placer derrière, plus logique), et une remise en forme supplémentaire pour aligner la taille de police sur celle du tableau source (ce qui donne un meilleur aspect au résultat).

A toi de vérifier maintenant si le résultat est le bon : tu as un bouton sur la feuille, qui lancera la macro...

Cordialement.

Cela m'a l'air pas mal du tout ! Un grand merci !!

Par contre, maintenant, je viens juste de me rendre compte que j'ai oublié de préciser une chose essentielle. C'est qu'il est possible que le tableau initial comporte jusqu'à près de 2000 lignes. Si je lance la macro telle quelle, est-ce que ça va prendre en compte toutes ces lignes ?

Bonjour,

J'aurais encore 2 petites demandes par rapport à cette macro.

Est-il possible que les cellules reprises dans les différents tableaux conservent leur couleur texte d'origine (Feuil1) ? Comment faire ?

Et ayant essayé d'insérer des informations sur une ligne relativement lointaine (env. ligne 1700), j'ai remarqué que la macro ne tenait plus compte de ces informations. Est-ce dû au fait que la macro tient compte que d'un certain nombre de lignes ? Ou est-ce dû au fait qu'il y ait des lignes vides entre-deux ?

J'aurais besoin, comme indiqué dans mon précédant message, de pouvoir insérer environ 2000 lignes dans la première feuille.

Si vous avez une solution, je suis preneur !

Merci, et bonne journée à tous.

J. Reverchon

Bonjour,

La macro s'exécutera quel que soit le nombre de lignes !

Elle prend en considération les conditions prédéfinies, qui se situent sur la ligne testée.

Je ne vois pas ce que tu entends par ton insertion d'informations, mais si tu insères des lignes pour y placer quelque chose, soit la ligne répond à une des conditions et sera prélevée à ce titre, soit elle ne répond à aucune et sera ignorée.

Les conditions sont toujours à définir au départ !

La macro est rapide car elle prélève les données source pour travailler hors Excel, afin de constituer 4 tableaux de résultats. On ne revient à Excel que pour affecter ces tableaux.

Il n'y a aucun copier-coller ni insertion ligne par ligne.

Des éléments généraux de mises en forme sont rétablis après affectation (alignements, police, bordures). Les couleurs (fond ou police) ne répondant à aucune condition utilisable pour les rétablir ont été laissées de côté...

Donc, soit elles sont motivées par des conditions qui, soigneusement définies permettraient de les rétablir, soit il faudrait reconcevoir la macro pour qu'elle opère comme en manuel par copier-coller (plus long...) ligne par ligne (encore plus long !). Au final le temps d'exécution serait pour le moins multiplié par 10 (et je suis peut-être encore optimiste). En pareil cas, je considère qu'une conception qui ne permet pas de concevoir des procédures rapides est à revoir, à son niveau conceptuel...

Cordialement.

Ok. Merci pour ces quelques précisions.

Ca semble effectivement fonctionner très bien. Si ça avait pu reprendre les couleurs du texte cela aurait été la perfection, mais je me contenterai de ceci.

Un grand merci pour l'aide et le travail réalisé !

Cordialement,

J. Reverchon

Bonjour,

Si ça avait pu reprendre les couleurs du texte

Si elles sont définies par des règles précises, on pourra les rétablir.

Bonjour,

Si ça avait pu reprendre les couleurs du texte

Si elles sont définies par des règles précises, on pourra les rétablir.

Malheureusement, les données ne permettent pas de déterminer si la couleur doit être rouge ou orange, car d'autres conditions interviennent.

Cependant, je me demandais si on utilise de manière manuelle les mises en forme conditionnelles, s'il était possible ensuite de définir les règles selon ce critère ?

Pour une MFC, il te faut des critère... Si tu as des critères on peut les appliquer aussi bien sans recourir à la MFC, ou en définissant la MFC par VBA...

Ok. Donc si je comprends bien, il est impératif d'avoir une condition définie selon le contenu d'une cellule et non de sa mise en forme (excepté mise en forme conditionnelle, mais qui se base également sur un contenu finalement) ?

La couleur est une mise en forme. Que ce soit pour une MFC ou autre chose, le critère pour la définir repose sur des valeurs de cellules...

Si tu ne mets pas tes couleurs au hasard, tu dois bien les mettre en fonction d'un critère ?

re à tous

n'est-on pas en train de revenir à :

  • les données sont saisies en nombres et lettres
  • les couleurs ne sont que des faire-valoir des données (les couleurs ne contiennent pas les données)

????????????????????

C'est justement là-dessus que j'avais un doute, à savoir si la couleur pouvait être considérée comme une condition ou pas. Apparemment pas.. J'aurais appris qqch !

Je suis à présent confronté à un autre petit souci.

Je souhaitais ajouter au tableau de MFerrand, qui est top soit dit en passant (encore un grand merci!), au niveau du 4ème tableau, en plus des "P", tous les "E"+"R".

J'ai essayé de recopier les formules en changeant les correspondances (e et r, en lieu et place des p), mais ça ne fonctionne pas. Le code VBA est pour moi encore qqch de peu familier...

Si je pouvais avoir encore ce petit coup de main, j'en serai ravi

Bonne soirée à tous

Bonjour,

Tu recherches cette ligne :

        ElseIf TbS(i, 3) Like "P*" Then

Tu la modifies ainsi :

        ElseIf TbS(i, 3) Like "[EPR]*" Then

Cordialement.

edit : Ça suffit pas ! car le ElseIf arrive après une condition If sur le critère Like "R*", donc les E sont pris, mais les R ont échappés. Va falloir autonomiser les conditions...

Voilà !

On éclate l'instruction conditionnelle en 2 :

        If TbS(i, 3) Like "R*" Then
            r = r + 1: ReDim Preserve Tbl2(2, r)
            Tbl2(0, r) = TbS(i, 1): Tbl2(1, r) = TbS(i, 2)
            Tbl2(2, r) = TbS(i, 3) & ", " & TbS(i, 4) & ", " & TbS(i, 5)
        End If
        If TbS(i, 3) Like "[EPR]*" Then
            p = p + 1: ReDim Preserve Tbl4(0, p)
            Tbl4(0, p) = TbS(i, 3) & Chr(10) & TbS(i, 1) & Chr(10) & TbS(i, 2) _
             & Chr(10) & TbS(i, 4)
        End If

Soit on ferme la première en ajoutant un End If et on remplace le ElseIf par If à la ligne suivante.

Et la condition qui devient Like "[EPR]*".

Il y avait aussi une petite anomalie dans le Tableau 3 : les bordures y intégraient une ligne vide :

            With .Range("A2").Resize(a, 5)
                .Font.Size = 8
                .Borders.Weight = xlMedium
            End With

Sur la première ligne citée, il y avait a + 1, à remplacer par a.

Cordialement.

Génial !

Je vais tenter de remplacer le code comme indiqué. Merci bcp !

J. Reverchon

Bonjour,

Je souhaiterais apporter quelques modifications à mon tableau (que je remets en copie). Mes compétences en code VBA sont quasi nulles, de ce fait, je n'y arrive pas.

Lorsqu'on lance la macro, dans le premier onglet généré ("conclusions amiante"), je souhaiterais pouvoir y inclure dans la colone C (Description) le code du tableau de base (Feuil1 - colone 3), suivi de " - ", puis la suite tel que maintenant.

Et puis, dans l'onglet "Conclusions réserves", modifier la récupération comme ceci : "code" (colone 3), puis " - " en lieu et place de "code"+", ".

Je sais pas si c'est très clair ?! Si vous pouvez faire qqch, j'en serais pleinement ravi.

Au plaisir de vous lire.

Julien R.

Rechercher des sujets similaires à "recuperation donnees couleur texte"