VBA - Selections lignes tableau sous Excel - VB/VBA/VBS - Programmation
Marsh Posté le 25-02-2011 à 10:00:27
Bonjour,
Voici un petit bout de code qui devrait répondre au problème.
Code :
|
Il ne reste plus qu'a ajouter la commande "Sort" pour trier les lignes.
@bientôt
Marsh Posté le 25-02-2011 à 10:56:44
Ouaouh!!! quelle rapidité!! je m'empresse de tester ceci et te tiens au courant... quoiqu'il en soit, merci!!!!
EDIT: Et bien avec une petite adaptation à mon besoin, cela à parfaitement fonctionné... encore merci.
Par contre, histoire d'améliorer ma compréhension, que veulent dire en "bon français" les lignes de programme?
Marsh Posté le 06-03-2011 à 15:11:23
mmarle a écrit : Bonjour,
|
Bonjour, bonjour,
bon ben finalement, je reviens vers vous car je ne m'en sort pas finalement avec le tri....
Alors voila le code que j'ai ecrit à partir de la réponse de mmarle:
Code :
|
Sur la ligne Range, si j'ai bien compris, on peut dire à la macro où se trouvent les données: ici entre les colonnes A et H.... jusqu'ici, tout fonctionne bien, j'ai bien tout mon tableau qui est sélectionné au lancement de la macro....
Après, à partir de l'enregistreur de macro, j'ai lancé un tri et recopié le code.... mais là, rien ne se fait... ce que je voudrai, c'est que le tri soit croissant à partir de la colonne A.... je suppose que c'est pas très dur à corriger mais je ne vois pas où est le problème...
D'ailleurs, si quelqu'un pouvait m'expliquer la signification de la ligne 9: "ActiveWorkbook.Worksheets("R14" ).Sort.SortFields.Clear" ce serait très gentil.
merci de votre aide.
EDIT: Bon ben je viens de résoudre mon pb en rajoutant les lignes suivantes (merci l'enregistreur ):
Code :
|
Je ne sais pas si la ligne setRange est orthodoxe mais ça fonctionne bien.... peut être avez vous plus simple?
Marsh Posté le 07-03-2011 à 10:39:26
Salut fidoboulette,
Ce code fonctionne bien.
Code :
|
@+
Marsh Posté le 07-03-2011 à 18:03:58
mmarle a écrit : Salut fidoboulette,
|
Je confirme.... merci
Marsh Posté le 09-03-2011 à 17:32:56
Bonjour à tous et surtout à mmarle qui est mon sauveur....
j'ai encore deux problème et une fois résolus, je viendrai à bout de mon "projet".
alors voila:
une fois que j'ai fait mes petites manip avec mon tableau... je souhaite dans un premier temps enregistrer mon fichier puis effacer toutes mes données (du tableau sus cité) et toutes les feuilles sauf trois qui sont identifiées... une sorte de réinitialisation en somme.
Une fois fait, je veux ré-enregistrer le tout sous un nom que j'appellerai "modèle".
En faisant une recherche sur google, j'ai trouvé des bout de lignes qui colleraient... presque!
Le nom du premier enregistrement se ferait en fonction de la valeurs de certaines cellules d'une feuille... mais surtout, je voudrais que l'enregistrement se fasse dans le dossier où il a été ouvert.
voici le bout de code d'enregistrement:
Code :
|
le problème c'est que là je lui indique un chemin et je ne vois pas comment triturer le code pour que ça s'enregistre dans un répertoire "relatif" (je sais pas si je suis clair.... )
Mon deuxième problème est que un peu plus loin, je voudrait effacer toutes les feuilles du classeurs sauf trois feuilles qui portent tjrs le même nom.
Pareil, après une recherche google, j'ai trouvé un bout de code qui théoriquement devrait le faire:
Code :
|
or dans ce cas, il m'éfface tout sauf la dernière feuille nommée "bases de référence"...
voilà, vu que je ne comprend pas grand chose à ce que je fais, peut être que c'est trois fois rien à modifier mais je n'y arrive pas...
merci de votre aide.
Marsh Posté le 09-03-2011 à 19:11:01
Salut fidoboulette,
A - Pour le chemin relatif, si j'ai bien compris, ce serait le chemin par défaut où se trouve le classeur ouvert.
Code :
|
où
Code :
|
est le chemin du classeur ouvert
et
Code :
|
est un "\".
B - Pour la suppression de feuille(s) (Réinitialisation)
Cas où les feuilles à garder sont au début:
Code :
|
Cas où les feuilles à garder sont à la fin:
Code :
|
Il ne reste plus qu'a adapter le code.
@+
Marsh Posté le 10-03-2011 à 18:35:01
mmarle a écrit : Salut fidoboulette, |
Génial ... merci Mais lorsque je lance ma macro, j'ai le message d'erreur "déclaration existante dans portée en cours"...
effectivement, j'utilise déjà la fonction Dim DEB et Dim FIN au début pour sélectionner automatiquement mon tableau.... comment pallier à ce problème?
Pour le pt A - tu as tout à fait compris... le fichier excel doit pouvoir être transporté d'une clé USB à une autre, ou sur un PC.... donc l'enregistrement doit se faire dans le répertoire où le fichier est ouvert.
Merci à toi.
Marsh Posté le 11-03-2011 à 08:43:29
Salut fidoboulette,
Le message d'erreur survient dès lors qu'une variable est déclarée plus d'une fois sous le même nom.
Code :
|
Une erreur est générée! Il suffit donc de supprimer une des deux déclarations où bien de déclarer sous un autre nom (Exemple: DEBTab pour le tableau et DEBFeu pour les feuilles)
@+
Marsh Posté le 11-03-2011 à 18:27:07
mmarle a écrit : Salut fidoboulette,
Une erreur est générée! Il suffit donc de supprimer une des deux déclarations où bien de déclarer sous un autre nom (Exemple: DEBTab pour le tableau et DEBFeu pour les feuilles) |
Bonjour mmarle (et les autres aussi...),
bon j'ai encore un problème... et un message d'erreur: "Erreur execut '9': L'indice n'appartient pas à la sélection" ... lorsque je lance le débogage, j'ai la ligne "Sheet(Feuille).Delete" qui est surlignée en jaune..
je me suis dit que ce n'était pas "Feuille" qu'il fallait mettre entre les parenthèses mais le nom du dernier onglet (pour moi, il s'appelle "Base de référence).... mais apparemment ce n'est pas ça.....
Donc dans mon effacement d'onglet, je voudrai garder les 3 derniers et effacer tous ceux avant.... j'ai donc repris ton code comme ceci en modifiant le nom:
Code :
|
Je suppose que c'est une erreur bête mais vu que je ne suis qu'une bille en macro....
merci encore à toi
Marsh Posté le 15-03-2011 à 14:52:25
Salut fidoboulette,
Je ne comprend pas, je viens de vérifier le code et tout fonctionne!
Peut-être pourrais-tu publier le code complet de ton application, avec une description précise de toutes les tâches que tu souhaites réaliser en fonction des conditions requises (Exemples:Nbre de feuilles par défaut, leurs noms, etc...).
@+
Marsh Posté le 15-03-2011 à 16:34:34
mmarle a écrit : Salut fidoboulette, |
Salut,
en fait, j'ai trouvé la réponse en demandant à des spécialistes informatiques de ma boite....
voici le code qu'ils m'ont proposé et qui fonctionne très bien pour mon cas:
Code :
|
mon problème est résolu...
et mon fichier est quasiment terminé...
Je viens juste de découvrir un nouveau souci avec une impression automatique mais j'en ferai part au forum (et à toi puisque tu es le seul à avoir proposé des soluces.... ) si je ne trouve pas.
en tout cas, merci bcps de t'être décarcassé
A+
Marsh Posté le 16-03-2011 à 07:52:33
ReplyMarsh Posté le 16-03-2011 à 08:36:23
mmarle a écrit : Oui trés bonne solution que de parcourir la collection Worksheets! |
Ah?? c'est ce que j'ai fais???
Non vraiment, j'y comprend pas grand chose aux macros... mais cette année j'aurai des formations donc j'espère que ça m'éclairera un peu... c'est vraiment chiant de faire des trux que je ne comprend aps complètement.....
merci encore à toi
Marsh Posté le 25-02-2011 à 05:30:29
Bonjour,
J'ai fait une recherche sur le forum et je n'ai rien trouvé qui corresponde à mon problème alors voilà:
J'ai réalisé sous VBA un programme me créant un tableau Excel. Dans la suite de mon programme, je souhaiterai sélectionner toutes les lignes de ce tableau pour pouvoir, entre autre, trier les données à partir de la première colonne. Il est possible que certaines lignes soient vides sauf la première colonnes, du coup la "fonction" curent region ne fonctionne pas. Le nombre de ligne peux être variable mais pas le nombre de colonne.... ça ressemble à quelque chose de ce genre:
...
5 2 1 14 25
4
3 1 2 30 12
2
1 9 4 15 78
Merci d'avance de votre aide car là je ne vois vraiment pas comment démarrer la macro.