|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 5 ![]() |
Bonjour à tous,
Le VBA est nouveau pour moi et je rencontre quelques difficultés. J'ai essayé de chercher la réponse à mon problème sans succès, aussi, je me permets de faire appel à vous. Je récupère un tableau avec un nombre de colonne variable. Certaines de ces colonnes ne m'intéressent pas et je souhaite donc les effacer en fonction du nom de l'entête de colonne. Pour l'instant le code efface bien les 17 premières lignes qui me sont inutiles, puis là c'est le drame, c'est là que ça ne marche plus. Code :
D'avance merci de votre aide, car là je sèche |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Je ne rajoute pas les "Worksheets("...")", on va partir du principe que la macro s'exécute forcément sur la bonne feuille
Code :
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 5 ![]() |
Merci beaucoup pour ta réponse ZebreLoup :cool:
Par contre j'ai juste une erreur lors du lancement de la Macro sur la ligne Code :
For i = UsedRange.Column + UsedRange.Columns.Count To 1 Step -1 En effet, désolé de ne pas avoir précisé, c'est pour lancer la macro directement à partir de la bonne Worksheet sur le doc d'origine que je récupère. Juste un détail également est-ce que le fait que je soit sur MS Office sur Mac pose un problème? |
|
|
00
|
|
|
#4 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonsoir,
Il faut quand même spécifier la feuille pour "UsedRange", même s'il s'agit de la feuille active : Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 5 ![]() |
Merci beaucoup Daniel
Je n'ai plus le message d'erreur par contre maintenant, cela m'effaces toutes mes colonnes sans distinction :dry: Je ne comprends pas pourquoi cela ne prend pas en compte les titres de mes colonnes dans la première ligne. Je suis vraiment désolé |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Désolé, il faut remplacer le Or par un And
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 5 ![]() |
ZebreLoup, Daniel.C,
Un grand, ennnnoooooorrrrrrrmmmmeeee, MERCI!! Ca marche super!! Big Up et pour la peine, vous avez le droit à votre ligne de Cool ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Merci car sans vous là sincère j'étais séché et cette Macro va vraiment me rendre la vie plus facile |
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 5 ![]() |
Re-Salut,
Juste un dernier Challenge sur lequel j'ai besoin d'aide. La Macro marche super jusqu'à 26 variables. Mais sur la worksheet sur laquelle je travaille, il me faut faire un If avec 40 différentes possibilités à comparer. Le problème est que je ne peux pas tout mettre sur une seule ligne, après la 26ième variable ça passe à la ligne et cela me met une erreur. J'ai du coup essayé de remplacer le If par un Case, par contre cela ne semble pas fonctionner. Pouvez-vous m'aider pour le Case? Voilà ce que j'ai essayé Code :
|
||
|
|
00
|
|
|
#9 | ||
|
Membre éprouvé
![]() Franck PRESSEInscription : août 2010 Messages : 202 ![]() |
Bonjour à tous,
Excusez l'incruste... Lorsque tu arrives en bout de ligne VBA, un peu avant même, tu peux passer à la ligne en mettant un espace puis _. Pour ton problème, je stockerais les noms des colonnes à conserver dans un Array (var tableau), les transmettrais dans un objet dictionnary, pour pouvoir utiliser la méthode Exists. Ca donnerais quelque chose comme [tu peux remarquer au passage comment je passe à la ligne dans l'Array] Code :
!!! Mise en garde : lorsque tu copie du code VBA (ou autre) sur Internet, il convient de tester sur une copie du classeur, ceci afin d'éviter de perdre des données et donc du temps... Notamment losque dans le code tu vois un "Delete"...
__________________
Cordialement, Franck P. Ps : n'oubliez pas de placer vos posts comme "résolus" ( ) si tel est le cas...
|
||
|
|
00
|
|
|
#10 | ||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Effectivement, l'utilisation d'un dictionnaire est sans doute le plus propre.
Sinon tu aurais aussi pu faire : Code :
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com