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

Signaler
Messages postés
40
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
8 décembre 2011
-
Messages postés
40
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
8 décembre 2011
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
40
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
8 décembre 2011

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.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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"
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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) ...
Messages postés
40
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
8 décembre 2011

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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 ?
Messages postés
40
Date d'inscription
jeudi 28 février 2008
Statut
Membre
Dernière intervention
8 décembre 2011

merci pour l'aide si précieuse, j'ai trouvé une autre solution
bon week end