Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 02/07/2009, 11h32   #1
Membre du Club
 
Date d'inscription: mars 2008
Messages: 81
Par défaut Insérer une ligne selon une condition

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:
  1. Sélectionner les données préexistantes (ctrl + A)
  2. Supprimer ces données (suppr)
  3. 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:
  1. Il n'y a pas d'entete, donc il faut insérer l'entete
  2. 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 :
Code :
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
...
 
Merci d'avance pour votre aide!
MiXinG est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 11h53   #2
Membre émérite
 
Date d'inscription: juin 2009
Localisation: Lorraine
Messages: 842
Envoyer un message via MSN à fgiambelluco
Par défaut

Si une des colonnes contenait une valeur ou une date, ce serait l'idéal.
Il suffirait de tester si sur la 1ere ligne cette cellule est numérique ou date.


--------------
Frédéric
http://www.access-developpement.com
fgiambelluco est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 12h15   #3
Membre à l'essai
 
Date d'inscription: juin 2009
Messages: 49
Par défaut petite idee ?

Salut,
Pourquoi ne pa donner une couleur à ta cellule, et tester celle-ci ?
Si éventuellement tu veux des codes je dois avoir ça dans mon b.....
CRACOS38 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 12h40   #4
Membre du Club
 
Date d'inscription: mars 2008
Messages: 81
Par défaut

salut!
merci pour vos réponses.
Pour les dates ou les chiffres ça ne fonctionne pas car j'ai plusieurs en tete différents qui ne contiennent pas forcément des chiffres ou des dates.
Pour la couleur, lorsqu'on supprime les données, la couleur reste donc le test ne fonctionnera pas.
MiXinG est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 13h11   #5
Membre émérite
 
Date d'inscription: juin 2009
Localisation: Lorraine
Messages: 842
Envoyer un message via MSN à fgiambelluco
Par défaut

Quand je parlais de 1ere ligne, je pensais à la 1ere ligne de données pas à celle de l'entête.
Il doit forcément y avoir des données de type date ou numérique dans une colonne
fgiambelluco est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 13h26   #6
Membre à l'essai
 
Date d'inscription: juin 2009
Messages: 49
Par défaut

Pourquoi tu ne passes pas par un bouton renvoyant à une macro de sup, modif .... protege ta feuille de façon que les utilisateurs soit obligés,
1erement de selectionner avec la souris la cellule concernée, 2emement de cliquer sur le bouton et là tu mets ce que tu veux
CRACOS38 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 16h36   #7
Membre du Club
 
Date d'inscription: mars 2008
Messages: 81
Par défaut

fgiambelluco: en gros ce que tu veux faire, c'est passer en revue toutes les cellules de la première ligne te regarder s'il n'y a pas de chiffre ou de dates et à ce moment la ce serait une ligne d'entete et on peut la supprimer? Je vais essayer pour voir

CRACOS38: je ne comprends pas ta solution, je ne suis pas sûr d'avoir bien compris. Ce traitement est fait au milieu de la macro et non lorsque l'utilisateur insère ses données, je ne peux donc pas mettre de bouton, puisque l'utilisateur ne touche plus à rien.

Merci à vous deux de m'aider en tout cas!
MiXinG est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 17h20   #8
Membre à l'essai
 
Date d'inscription: juin 2009
Messages: 49
Par défaut

Désolé, mais tu n'est pas très clair pour moi, tu dis :" mais lorsque l'utilisateur supprime les données (et donc l'entete), le nom de la cellule n'est pas supprimé " je ne vois pa sce qui t'empeches de lancer un controle à ce moment là.
CRACOS38 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 14h10.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.