[Catégorie modifiée .Net --> VBA] Insérer des lignes vides à certains endroits d

rouday55 Messages postés 40 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 8 décembre 2011 - 11 juin 2010 à 14:36
rouday55 Messages postés 40 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 8 décembre 2011 - 12 juin 2010 à 16:56
Bonjour,
C'est encore moi qui ai besoin d'un petit coup de pouce.
En fait j'aimerais faire une petite macro toute simple sur vba pour faciliter la lecture de ma feuille de calcul.
J'explique un peu le probleme :

en fait j'ai une feuille de calcul concentrée sur la 1ere colonne (les autres important peu).
C'est en fait une liste de numéro de téléphone.

Donc en gros la page ressemble a ca :

cells(1,1) = NUMERO du 1er mec
cells(2,1) = son numero de fixe
cells(3,1) = son numero de fax
cells(4,1) = son numero de de portable

cells(5,1) = NUMERO du 2eme mec
cells(6,1) = son numero de fax

cells(7,1) = NUMERO du 3eme mec
cells(8,1) = son numero de fixe
cells(9,1) = son numéro de portable

et en fait comme vous le voyez un mec peut avoir différents numéros. J'aimerais en fait insérer une ligne vide entre le nom du mec(X) et le dernier numéro du mec(X-1), est ce que c'est possible?

J'avais pensé à faire un test du genre, on parcourt toute la colonne a la recherche de la chaine de caractere "NUMERO" en utilisant peut etre l'instruction instr je ne sais pas , et on ajoute une ligne vierge a chaque occurrence . Donc voila mon probleme, si vous avez quelqu'idée que ce soit je vous écoute !
Merci

7 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
11 juin 2010 à 15:05
Salut
Merci de bien faire attention à la catégorie de la question.

Tu as déjà résolu le problème : Faire une recherche du mot NUMERO et regarder si la ligne du dessus est vide :
Oui : Tout va bien
Non : Tu insères une ligne

Le reste, l'enregistreur de macro ET l'aide te suffisent :
- Enregistre une macro pendant que, manuellement, tu sélectionnes la colonne A puis que tu fais une recherche (menu édition, rechercher) du mot NUMERO
- Une fois que tu as trouvé une cellule, tu as juste un If à faire pour tester si la cellule de la ligne précédente est vide : Voir Offset
- Si besoin, Insérer une ligne : Enregistreur de macro
- Regarde dans l'aide comment faire une boucle pour poursuivre la précédente recherche jusqu'à ne plus trouver de résultat.

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

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
rouday55 Messages postés 40 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 8 décembre 2011
11 juin 2010 à 15:58
merci jack pour votre réponse , et désolé pour la catégorie.
Mais ce que je nsais pas faire, c'est comment analyser le contenu de la cellule qui contient le mot "NUMERO" qui contient d'autres caractères après ?Comment demander d'analyse que les 6 premiers caracteres de la cellule uniquement ? Doit on forcément passer par les offset ?

j'avais pensé a un truc du genre

for i =3 to fin (ou fin est le nombre de lignes remplies)
if cells(i,1).Value = "NUMERO then
cells(i-2,1).select
selection.entireRow.insert
end if
next i

mais en fait ca m'insert uniquement une cinquantaine de lignes vides entre le dernier numéro de la premiere personne et le nom de la seconde.
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
11 juin 2010 à 17:13
Est-ce que tu as lu ce que j'ai écrit ?
Enregistre une macro pendant que, manuellement, tu sélectionnes la colonne A puis que tu fais une recherche (menu édition, rechercher) du mot NUMERO

Dans ta boucle, puisque tu tiens tant à faire une boucle : Si tu insères une ligne, il faut aussi incrémenter 'i' sinon il refera le test à partir de la ligne vierge, donc il trouvera à nouveau le même "NUMERO"
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
11 juin 2010 à 17:14
Mais dans ce cas, 'fin' ne sera plus correct puisque tu ajoutes des lignes et que 'fin' n'est pas recalculé (de toute façon, la borne de fin d'un For-Next n'est pas modifiable pendant la boucle) ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rouday55 Messages postés 40 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 8 décembre 2011
11 juin 2010 à 22:31
ha oui d'accord je comprends ca ne peut pas marcher. Je ne comprends pas trop quand vous dites : Enregistre une macro pendant que, manuellement, tu sélectionnes la colonne A puis que tu fais une recherche (menu édition, rechercher) du mot NUMERO

j'ai enregistré une macro pendant que je fais insérer une ligne au dessus et le code m'indique : Selection.Insert Shift:=xlDown mais pour rechercher je ne sais pas faire
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
12 juin 2010 à 01:49
Bah ...
Enregistre une macro pendant que, manuellement, tu sélectionnes la colonne A puis que tu fais une recherche (menu édition, rechercher) du mot NUMERO
ça veut dire
Enregistre une macro pendant que, manuellement, tu sélectionnes la colonne A puis que tu fais une recherche (menu édition, rechercher) du mot NUMERO

Veux-tu que j'essaye de te l'écrire en polonais ?
0
rouday55 Messages postés 40 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 8 décembre 2011
12 juin 2010 à 16:56
merci pour l'aide si précieuse, j'ai trouvé une autre solution
bon week end
0
Rejoignez-nous