FORUM Tom's Hardware » Programmation » Autre » Macros Excel - Aide demandée
 

Macros Excel - Aide demandée

Il y a 328 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Macros Excel - Aide demandée
 
Plus d'informations

Bonjour,

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.

Merci !

zeb
Profil : Modérateur libre
Plus d'informations

Faut-il donc le faire pour toi ?

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 :
  1. 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 :
  1. =LIGNE()

Donc pour "s'arrêter de compter", mettre une condition pour savoir si la ligne est vide ( cf ci-dessus ). Ex:

Code :
  1. =SI(B7="";LIGNE();"" )

Plus d'informations

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.

zeb
Profil : Modérateur libre
Plus d'informations

Dis-moi tu ;)

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 :D

Plus d'informations

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...

zeb
Profil : Modérateur libre
Plus d'informations

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>>

Plus d'informations

Allô encore !

J'essaie mais je n'arrive pas à faire fonctionner la formule. Comme programme-t-on une boucle ?

Plus d'informations

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 !

Plus d'informations

Salut!

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

Plus d'informations

suis je bete :sweat:

tu peux trier les lignes de ton classeur pour regrouper les lignes vides, les virer, puis les re-trier dans le bon ordre ensuite!

zeb
Profil : Modérateur libre
Plus d'informations

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 :
  1. Option Explicit
  2. function LigneEstVide ( Ligne as Integer ) as Boolean
  3.     Dim i as Integer
  4.     LigneEstVide = True
  5.     For i = 1 to 256
  6.         If Cells ( L, i ).Formula <> "" Then
  7.           LigneEstVide = False
  8.           Exit Function
  9.         End If
  10.     Next
  11. End Function

Devine ce que fait la fonction !

Plus d'informations

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.

Plus d'informations

J'ai réussi en partie...

Code :
  1. 'Formule SI cellule n'est pas un chiffre ou est vide
  2.     Range("C12" ).Select
  3.     ActiveCell.FormulaR1C1 = _
  4.         "=IF(OR(R[-1]C[-2]="""",ISNUMBER(R[-1]C[-2])),"""",R[-1]C[-2])"
  5.     Range("C13" ).Select



Je voudrais copier cette formule dans toutes les cellules jusqu'à la fin de mon document (qui change évidemment de longueur !)

J'ai essayé avec la boucle mais je dois manquer de logique...


Message édité par veronique_ cdpdj le 09-01-2006 à 20:08:42
Plus d'informations

Merci de votre aide. Je n'ai pas réussi ce que je voulais faire mais c'est accepté comme ça.


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » Autre » Macros Excel - Aide demandée
 

Annonces Google
Publicité
Les téléchargements