J'ai un gros document dans Excel et je voudrais ajouter à ma macro une commande pour :
1) Effacer les lignes vides
2) Faire écrire une numérotation automatique dans la première cellule de chaque ligne en arrêtant à la fin de mon document.
Se demander ce qu'est une ligne vide. Comme en math, on peut prendre la définition à la lettre, ou raisonner par l'absurde.
- une ligne vide au sens trivial. (chiant à vérifier)
- une ligne qui contient quelque chose dans la colonne C n'est pas vide. (facile), mais pour ça, il faut être sûr que la colonne C est obligatoirement renseignée.
Quelques pistes :
Effacer une ligne :
Code :
Rows("N:N" ).Delete Shift:=xlUp
où N est le numéro de la ligne à supprimer.
Récupérer le numéro de la ligne courante:
Code :
=LIGNE()
Donc pour "s'arrêter de compter", mettre une condition pour savoir si la ligne est vide ( cf ci-dessus ). Ex:
En fait, pour ce qui était d'effacer des lignes, ça va mais je veux effacer des lignes vides qui se sont pas toujours les mêmes d'un document à l'autre. C'est vrai que ma question n'était pas claire (j'étais un peu pressée je crois...)
Ce que je veux faire en fait, c'est effacer une ligne si elle ne contient aucune information. Et je veux que ça arrête quand j'arrive à la fin de mon document. Je vais essayer avec le code que vous venez de me donner. Merci de votre aide.
Il faut te créer une fonction qui détermine si une ligne est vide, et aussi que tu définisses ce que signifie "fin du document". En effet, une feuille excel contient 65536 lignes. Et tu risques d'avoir pas mal de lignes vides vers le bas
J'essaie tout ça et je te donne des nouvelles. Je suis bien contente de parler avec qqn qui s'y connait. C'est la première fois que je viens sur un Forum pour ce genre d'info...
Mais tous les forums sont pleins de gens de bonne volonté.
Tu trouveras ici toute l'aide possible juste en montrant toi aussi ta bonne volonté : <<j'ai fait ci, j'ai tenté ça, ça ne marche pas voici un bout de code (entre les balises [ CODE ]), etc>>
Est-ce que je pourrais t'envoyer un exemple de mon fichier ? Comme ça, si tu peux m'aider, ce serait plus facile (et j'apprécierais beaucoup mais si tu n'as pas le temps, je comprends aussi... )
J'essaie et je suis en train de me rendre folle !! Rien ne fonctionne comme je veux. Je me demande même si c'est possible de faire ce que j'essaie de faire !
Si tu veux pas passer par du code, tu peux le faire "a la main" s'il n'y a pas trop de lignes vides
pour repérer les lignes vides, tu appuies une fois sur "Fin" (sur le clavier), et flèche vers le bas. Le curseur s'arretera avant la cellule vide. Tu recommence jusqu'à la fin de ton doc. ça marche avec fin + n'importe quelle flèche pour le sens de déplacement
pour la numérotation auto (une fois les lignes supprimées)
tu tapes 1 sur ligne 1, 2 sur ligne 2, tu sélectionne les 2 cellules, tu met la souris sur le ptit carré en bas à droite et tu fait un cliquer glisser vers le bas jusqu'à la fin du doc. Excel va auto incrémenter.
OU
1 sur la 1ere ligne, "=A1+1" sur la 2e et copier vers le bas jusqu'à la fin du doc. cette solution évite de renuméroter si tu enlève des lignes
Non, Véronique, je veux bien passer beaucoup de temps sur le forum, mais rien en privé. C'est par principe. Tu peux publier les parties difficiles de ton code ici. Et comme je ne possède pas la vérité unique, d'autres peuvent aussi t'aider, comme Paponpon, tu vois.
Pour une boucle, utilise FOR..TO..NEXT.
Exemple de boucle :
Code :
Option Explicit
function LigneEstVide ( Ligne as Integer ) as Boolean
C'est loin toutes ces connaissances... En plus, c'est plus en C++ que j'ai appris qu'en VB... Merci beaucoup de l'aide à tous les deux. Ça avance... Ma directrice va être contente si je réussi ce coup de force... Bien sûr, je lui ai dit que je ne suis pas seule sur ce problème !! Quand je vais réussir, je vais mettre le code ici pour référence à d'autres.