Excel 03 - tester la dernière cellule vide d'une colonne + y ajouter le nombre p
sardonick
Messages postés7Date d'inscriptionmardi 5 août 2008StatutMembreDernière intervention16 août 2009
-
5 août 2008 à 16:30
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 2012
-
15 août 2008 à 11:14
Bonjour,
Je suis débutant et j'utilise naturellement Excel d'une manière atypique et sûrement grossière.
Je crée une macro, mais je bute sur deux problèmes:
Dans une colonne A il y a des nombres en ordre numérique croissant comportant quelques nombres absents.
Lors du fonctionnement de ma macro, je souhaite pouvoir automatiser:
- la recherche de la cellule vide et afin de la remplir avec le nombre situé dans la cellule précédente +1
Ensuite, je souhaite pouvoir déterminer :
- combien de cellules sont occupées -1 (dans la colonne A) et incorporer cette réponse dans un Chercher - Remplacer pour mettre à jour une macro comportant ce nombre variable.
Un grand merci pour votre réponse.
A voir également:
Excel 03 - tester la dernière cellule vide d'une colonne + y ajouter le nombre p
bonjourcheval
Messages postés228Date d'inscriptionmercredi 13 décembre 2000StatutMembreDernière intervention 8 août 2011 5 août 2008 à 19:46
Ou bien, pour la dernier ligne contenant une donnée, tu peux te faire une variable qui compte le nombre de lignes vides consécutives.
Si la variable est plus grande que 30, par exemple, tu retournes à la premiere des 30 lignes vides et tu y fais ton traitement.
C'est peut-être un peu brouillon comme méthode mais c'est probablement plus rapide que de vérifier 60 000 lignes vides, même si tu es absolument certain de ne pas te tromper avec cette méthode.
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 5 août 2008 à 20:01
bonjour bonjourcheval
je te conseille d'essayer d'écrire ta méthode et de la comparer avec la mienne
si tu veux avoir un résultat fiable il va te falloir un sacré paquet de lignes de codes
et donc être beaucoup plus lent en fin de compte !
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
bonjourcheval
Messages postés228Date d'inscriptionmercredi 13 décembre 2000StatutMembreDernière intervention 8 août 2011 5 août 2008 à 20:49
Moi je pensais à :
Do until tonclasseur.EOF 'Connais pas assez les classeurs pour savoir la vraie syntaxe. Une alternative pourrais etre Do until False, mais il faut etre certain de ne pas arrivé au End Of File, donc 65 000
Lire une ligne
Do while Ligne = ""
Lire une ligne
compeur = compteur + 1
loop
Si Compteur > lavaleurChoisie
Traitement
exit do
sinon
Compteur = 0
Fin_SI
loop
Walla. À savoir quel est le plus rapide xD
Mais ce qui est sur, c'est qu'avec ta méthode, c'est impossible de se tromper.
Vous n’avez pas trouvé la réponse que vous recherchez ?
sardonick
Messages postés7Date d'inscriptionmardi 5 août 2008StatutMembreDernière intervention16 août 2009 9 août 2008 à 20:51
Merci pour vos réponses rapides, je n'ai pas eu encore le temps, et j'ai du réinstaller excel parce qu'il me manquait utilitaire d'analyse et d'analyse VBA. Je vais m'y mettre dès demain. @+
sardonick
Messages postés7Date d'inscriptionmardi 5 août 2008StatutMembreDernière intervention16 août 2009 10 août 2008 à 11:16
Rebonjour,
Je n'y arrive pas non parce que la solution n'est pas bonne mais parce que je dois préalablement faire les opérations macro suivantes que je ne maîtrise pas.
1. j'ouvre un tableau excel.xls
2. depuis le tableau je met en route une nouvelle macro
3. j'ouvre un fichier tableau excel.csv
4. j'extrais du tableau excel.csv par une sélection une ligne de chiffres
5. je retourne au tableau excel.xls et j'insère une ligne vide
6. je fais un coller du contenu excel.csv extrait dans les lignes vides du tableau
excel.xls.
Logiquement je suppose que ce n'est pas faisable mais qu'il faut partir d'une progammation VBA extérieure à Excel.
Si vous avez un tuyau c'est avec plaisir que j'en prendrai connaissance.
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 10 août 2008 à 11:45
salut
pour utiliser une macro VBA tu dois forcément être dans excel
un fichier csv est un fichier texte il y a donc plusieurs façons possibles de l'importer dans excel
quelque chose du genre : Workbooks.Open Filename:="C:\Tonfichier.csv" doit en principe fonctionner
ensuite tu n'as plus qu'à faire ton traitement
sinon tu as un moyen relativement simple quand tu ne sais pas comment écrire un code
tu ouvres excel sur un fichier vierge
tu lances l'enregistruer de macros
puis tu fais tes opérations manuellement
quand tout est fini tu arretes l'enregistreur de macro
dans l'IDE de VBA tu auras le code de la procédure que tu viens d'éxécuter (avec un certain nombres de lignes inutiles certes) parfaitement opérationnel
le seul défaut de l'enregistreur de macro c'est qu'il reproduit fidélement tes actions mais qu'il ne sait pas faire d'actions conditionnelles donc les boucles de test et autres joyeusetés il te faudra quand meme les écrire
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
sardonick
Messages postés7Date d'inscriptionmardi 5 août 2008StatutMembreDernière intervention16 août 2009 11 août 2008 à 14:03
Salut pile_poil,
"quelque chose du genre : Workbooks.Open Filename:="C:\Tonfichier.csv" doit en principe fonctionner"
J'ai parcouru le net et le en principe semble gravement compromis. Il semble que ce soit là un truc qui bouchonne tous les espoirs de progresser, tant il y a de questions sans réponses concluantes, au point que certains ce sont imaginés pouvoir vendre la solution...
Aussi ne t'étonne pas si je ne reponds pas durant un certain temps, c'est que je cherche...
sardonick
Messages postés7Date d'inscriptionmardi 5 août 2008StatutMembreDernière intervention16 août 2009 12 août 2008 à 18:18
Salut à tous,
Après bien des transpirations, j'ai réussis à 99% à résoudre le problème du
Workbooks.Open Filename:="C:\Tonfichier.csv"
J'ai juste un petit problème, au milieu de la macro après ActiveWorkbook.Close il me pose cette question:
Voulez vous enregistrer les modifications apportées à "*.txt" et je dois cliquer oui, manuellement.
J'ai essayé de mettre une macro pour faire fonctionner ma macro, mais dans le programme je n'ai trouvé de probant pour automatiser cette réponse.
Est-ce qu'il existe un moyen pour automatiser la réponse oui ?
sardonick
Messages postés7Date d'inscriptionmardi 5 août 2008StatutMembreDernière intervention16 août 2009 12 août 2008 à 19:03
Salut à tous,
J'ai essayé la formule de pile_poil, en l'intégrant à ma macro. Il y a un plus puisque je me retrouve effectivement dans la case vide, mais le nombre précédent + 1 n'y est pas copié. Quid de la solution ?
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 15 août 2008 à 11:14
salut
pour ta premiere question :
"Workbooks.Open Filename:="C:\Tonfichier.csv"
J'ai juste un petit problème, au milieu de la macro après ActiveWorkbook.Close il me pose cette question:
Voulez vous enregistrer les modifications apportées à "*.txt" et je dois cliquer oui, manuellement. "
display.alert= false'ceci désactive les messages de excell mais vérifie la synthaxe exacte je te le cite de mémoire
Workbooks.Open Filename:="C:\Tonfichier.csv"
et à la fin de ta macro tu mets
display.alert= true' pour réactiver les messages d'alerte dans le fonctionnement normal d'excel
pour la deuxieme :
LigneVide = Cells(Rows.Count, "A").End(xlUp).Row + 1
Range("A" & LigneVide)= Range("A" & LigneVide-1).value+1
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE