Formatage automatique Tableau

pin7pin Messages postés 3 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 16 mars 2009 - 24 févr. 2009 à 17:00
pin7pin Messages postés 3 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 16 mars 2009 - 24 févr. 2009 à 20:17
Bonjour,
Un instrument me renvoie des données sous forme de tableau csv (le nombre de lignes est variable, selon les cas). Chaque colonne correspond à un paramètre et chaque ligne à un enregistrement. Le premier paramètre peut prendre la même valeur pour plusieurs lignes consécutives. Pour améliorer la visibilité, je souhaiterais insérer une ligne vierge après chaque groupe de lignes dont la première colone comporte la même valeur. De plus je souhaiterais fusionner les cellules de la première (A) et la dernière colonne (J) (et uniquement celles-ci), pour chaque groupe de lignes avec une valeur indentique dans la colonne A (entre les lignes insérées à l'étape précedente, en fait). Et tout cela, en évitant les messages de cofirmtion de la recopie de la première cellules dans la fusion. Finalement (), je souhaiterais centrer verticalement les cases fusionnées.
J'ai essayé deux/trois trucs qui ne fonctionnent pas, mais je pense qu'à l'intérieur de votre communautré je serais de niveau 2/3 degrés Kelvin, alors c'est plutôt logique.
Quelqu'un aurait-il une solution ?
Je fais cette modif à la min sur un tableaus de 1500 à 2500 lignes une fois par semaine, alors cel va sans dire que je serais vraiment très reconnaissant de la moindre aide que vous pourriez- m'apporter.
Note importante : je suis sous mac (OS10.4) avec la version 2008 d'excel, ou OpenOffice 3 avec une très forte préférence pour OpenOffice.
A plus
Christophe

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 févr. 2009 à 18:28
Salut
Le VB de Excel est du VBA, pas du .Net --> Catégorie modifiée

Est-ce que tu sais le faire à la main ?
Oui : Enregistre une macro pendant que tu le fais et tu auras le code
Non : Essaye un truc du genre (à corriger, fait de tête) :
   Dim maZone As Object
   Dim maCellule As Object
   Dim maMemo As String
   Dim bInsertionRecente As Booleen

   Set maZone = Range("A:A")
   For Each maCellule In maZone
      If maCellule.Value = "" Then
          If Not bInsertionRecente Then
             Exit For   ' Cellule vide non volontaire = Fin
         Else
            bInsertionRecente = False
         End If
      Else
         If maMemo = "" Then
            maMemo = maCellule.Value
         Else
            If maCellule.Value <> maMemo Then
               ' Nouvelle data
               Ici, le code pour insérer une ligne à l'emplacement maCellule.Row
               bInsertionRecente = True   ' pour prochain cycle
               maMemo = ""   ' Réinit
            End If
         End If
      End If
   Next

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
pin7pin Messages postés 3 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 16 mars 2009
24 févr. 2009 à 18:52
Merci beaucoup, déjà pour la correction de la catégorie. (l'enregistrement est donc impossible). Pour mon tableau le souci est que ces valeurs identiques à regrouper sont différentes à chaque fois et il faut donc prendre la décision à chaque ligne : si (A,n+1) ? (An) alors insérer une ligne entre (A,n) et (A,n+1). Puis pour toutes les cellules A et J qui sont séparées par 2 lignes vides de fusioner ces cellules. Si je subodore bien ton code, il fait le boulot pour certaines valeurs déterminées en colonne A.
Merci bcp en tous cas
A plus
Christophe
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 févr. 2009 à 19:24
Non, analyse bien le code, tu verras qu'il mémorise le contenu de la première cellule et qu'il détecte si le contenu change au fur et à mesure qu'il descend.
Par contre, s'il rencontre une ligne vide (autre que celle qu'on aurait pu insérer), il arrête la recherche.
A toi de l'améliorer
0
pin7pin Messages postés 3 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 16 mars 2009
24 févr. 2009 à 20:17
Merci beaucoup, je vais retravailler ça.
A plus
Christophe
0
Rejoignez-nous