pédago VB Excel : comment faire une moulinette ?

flyjodel

XLDnaute Junior
Bonjour à tous et surtout aux pédagogues... !

je n'ai pas les bases nécessaires à la programmation en VB Excel, alors je cherche à m'instruire au travers d'un exemple concret. Je cherche quelqu'un qui pourrait m'écrire une macro VB permettant de faire les opérations suivantes, de manière à ensuite regarder le code et pouvoir réaliser ce genre de choses moi-même.

L'une des opérations que j'effectue souvent est la conversion de fichiers GPS d'un format à un autre.

Ici, dans le fichier gps_glyjodel.xls, je veux apprendre à faire une macro qui à partir de la feuille gps_IN:

1. décale les colonnes C à E d'une colonne vers la droite (insertion d'une colonne C)
2. convertisse toutes les données de D (altitude en pieds) en les divisant par 3.28, le résultat étant dans C (la nouvelle colonne créée en 1.)
3. échange les valeurs des colonnes A et B : par exemple en insérant une colonne avant A, recopiant les valeurs de l'ancienne B dans la nouvelle colonne et supprimer l'ancienne colonne B (logitude), nouvellement C donc.
3. copie les VALEURS uniquement des colonnes A B et C dans une nouvelle feuille
4. accessoirement : enregistre la nouvelle feuille dans un fichier CSV (si possible avec des virgules à la place des ';' mais je ne sais pas comment fdaire, même en dehors d'une macro)

C'est le point 2. qui me pose le lus de problèmes, comment faire pour mettre un calcul dans une formule, le recopier jusqu'à la fin des données de la colonne D ?

Le fichier gps_IN.xls contient par colonnes :
Latitude / Longitude / altitude en pieds / date / heure

je voudrais que le fichier gps_OUT.xls ou .csv contienne :
Longitude / Latitude / altitude en mètres

la feuille gps_OUT du zip montre ce que je veux obtenir, il 'ne me manque plus que' la macro (et le talent) ;-)

Merci beaucoup ! [file name=gps_flyjodel.zip size=2272]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/gps_flyjodel.zip[/file]
 

Pièces jointes

  • gps_flyjodel.zip
    2.2 KB · Affichages: 44

Shining Hawk

XLDnaute Junior
Salut flyjodel,

Le talent (et la force...) sont en toi!

Je ne veux pas botter en touche, mais je pense que pour faire ce genre de macro (et apprendre en même temps) tu peux utiliser l'enregistreur de macros d'Excel (dans le menu Outils/Macros/Nouvelle macro...). Une fois qu'il est déclenché, tu fais les actions que tu as cité soit une par une, soit en globalité et ensuite tu analyse, modifie ... le code qui a été généré.

Si tu as des soucis de compréhension ensuite sur telle ou telle action, n'hésite pas à le faire savoir au forum: il y aura toujours une âme charitable pour te répondre (par exemple le point 4 semble délicat à résoudre par l'enregistreur de macro et surement moins pour ce forum...)

Bon courage
A+
 

flyjodel

XLDnaute Junior
Re:pédago VB Excel : comment faire une moulinette

Tu as raison, c'est ainsi que j'opère habituellement, mais là je ne m'en sors plus... Il me manque trop de bases, comme par exemple comment faire entrer une variable dans une macro et plein de définitions et de concepts assez basiques, mais que j'ai oubliés depuis que je ne pratique plus les languages de programmation.

Bon alors pour en revenir à mes moutons, j'ai une question précise pour mon exemple ci-dessus :

Code:
Range('C2').Select
ActiveCell.FormulaR1C1 = '=RC[1]/3.28'
Range('C2').Select
Selection.AutoFill Destination:=Range('C2:C10'), Type:=xlFillDefault

Comment faire pour recopier la formule automatiquement jusqu'à la dernière valeur de la colonne sur laquelle s'opère le calcul ? Je ne veux plus le terme C2:C10 dans la quatrième ligne, mais plutot un truc du genre : C2:C-nbval(C:C)-
Je connais la fonction NBVAL() mais je ne sais pas son équivalent en VB Excel.

Merci


Message édité par: flyjodel, à: 22/08/2005 12:37
 

Shining Hawk

XLDnaute Junior
Re:pédago VB Excel : comment faire une moulinette

No-stress,

tu peux adopter plusieurs solutions:

soit tu utilises la fonction NBVAL dans l'une des cellules de ton tableau (ex: E1) puis tu récupères la valeur de E1 comme suit:

Destination:=Range('C2:C' & Range('E1').Value)

Soit tu n'utilise pas la fonction NBVAL:

Destination:=Range ('C2:C' & ActiveCell.SpecialCells(xlLastCell).Row)

sachant que ActiveCell.SpecialCells(xlLastCell).Row te renvoit le numéro de la ligne de la dernière ligne remplie de ton tableau. Pour la retrouver en utilisant l'enregistreur de macros, tu peux utiliser la combinaison de touches Ctrl + Fin.
 

michel_m

XLDnaute Accro
Re:pédago VB Excel : comment faire une moulinette

Bonjour à tous,

Flyjodel, tu pourras trouver en Pj quelques propositions de macro: 1 globale et 3 pour chaque point pour essayer d'être 'pedagogique'

Pour apprendre, je ne saurai trop te suggérer de piocher dans le WIKI de notre ami Michel XLD dans lequel tu trouveras des tas d'exemples et d'explications précieuses; je crois qu'il y a également l'export vers CSV.
https://www.excel-downloads.com/threads/ref-wiki-1-de-michelxld-generalites-excel.92356/

A visiter également un site très pédagoqique sur VBA Excel:
www.info-3000.com

Bonne découverte

Michel_M [file name=gps_retour.zip size=9850]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/gps_retour.zip[/file]
 
Dernière édition:

flyjodel

XLDnaute Junior
Re:pédago VB Excel : comment faire une moulinette

Je n'ai qu'un mot aà la bouche : fromidable !

Merci our ton exemple, je sais c'est bien simple, mais cela me met franchement le pied à l'étrier.

Merci encore, j'ai presque réussi à faire ce que je veux, il ne me manque plus qu'à développer la partie 'import / export de fichier' mais avant de poser trop de questions je vais étudier les deux liens que tu m'as donnés.

C'est Excellent-downloads ici !

Michel
 

Discussions similaires

Réponses
12
Affichages
198