Bonjour à tous!
Voici le problème sur lequel je planche depuis un bon bout de temps sans y arriver.
L'idée c'est que j'ai une feuille excel, que l'on remplie de données brutes, qui servent à générer des rapports. La procédure à suivre est la suivante:
- Sélectionner les données préexistantes (ctrl + A)
- Supprimer ces données (suppr)
- Ajouter ses données persos (ctrl + V après avoir sélectionné A1)
Comme ces données sont brutes, la macro insère automatiquement le titre des colonnes (que j'appelle l'entete).
L'entete varie d'une feuille à l'autre et d'une langue à l'autre.
Cette feuille sert à la génération de rapport. Les cas d'utilisation sont les suivant:
- Il n'y a pas d'entete, donc il faut insérer l'entete
- il y a un entete, donc on supprimer cet entete et on remet le nouvel entete (pour être sûr qu'il soit dans la bonne langue)
Mon problème est que je n'arrive pas à savoir s'il y a un entête ou non.
La solution brutale serait de comparer la premiere ligne à tous les entetes possibles, mais c'est un peu trop brutal. J'ai essayé une méthode plus fine en nommant la première cellule, mais lorsque l'utilisateur supprime les données (et donc l'entete), le nom de la cellule n'est pas supprimé. Donc mon test ne fonctionne pas.
Au niveau du code voila ce que j'avais :
Merci d'avance pour votre aide!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Sub Inserer_Entete(nomFeuille As String) Dim i As Integer, ligneEnTete As Integer, indexNom As Integer ligneEnTete = -1 indexNom = -1 For i = 1 To ThisWorkbook.Names.Count Step 1 If (ThisWorkbook.Names(i).Name = ENTETEINSERE & nomFeuille) Then indexNom = i End If Next i 'Si le nom de cellule existe on le supprime If (indexNom <> -1) Then If (cellule_porte_un_nom("$A$1")) Then ligneEnTete = ThisWorkbook.Names.Item(indexNom).RefersToRange.Row End If ThisWorkbook.Names.Item(indexNom).Delete End If 'Si la ligne d'entête existe on la supprime If (ligneEnTete <> -1) Then Rows(ligneEnTete & ":" & ligneEnTete).Select Selection.Delete End If Rows("1:1").Select Selection.Insert Shift:=xlUp ...
Partager