Transformer en numéro de colonne une saisie utilisateur

Transformer en numéro de colonne une saisie utilisateur - VB/VBA/VBS - Programmation

Marsh Posté le 25-05-2012 à 11:21:26    

Bonjour,  
 
Une question pourtant simple me laisse perplexe en ce jour de replongée dans les macro Excel.
 
Ma macro est dans un premier fichier Excel. J'utilise des données qui sont dans un autre fichier Excel. Ces données étant susceptibles de changer de place, je demande à l'utilisateur de systématiquement préciser le nom des colonnes dans lesquelles je dois aller faire mes recherches.
 
Ensuite, pour moi, deux façons de travailler :
- Cas 1 : soit j'arrive à utiliser la valeur donnée par l'utilisateur directement dans un "range", et ça me va
- Cas 2 : soit j'arrive à convertir la valeur saisie par l'utilisateur en numéro de colonne, que j'utilise dans un "cells", et ça me va aussi
 
Cas 1 :
Je n'y arrive pas. Autant "range" semble accepter les variables pour ce qui est des numéros de ligne, autant pour les valeurs texte reprenant des noms de colonne, apparemment il ne veut pas, puisque ça plante.
 
Cas 2 :
Je n'y arrive pas non plus. J'ai testé plein de fonctions diverses et variées, mais elles me permettent généralement de récupérer la valeur en numéro de la cellule courante. Or, c'est le texte de cette cellule que je veux convertir, ça ne fonctionne donc pas.
J'ai également fait des tests avec "chr"/"asc" mais le souci c'est que les colonnes en question ont parfois deux lettres (typiquement, AR et AS qui m'ont permis de détecter le problème), ça ne fonctionne donc pas.
 
 
Voilà, je suppose que le pb est basique, mais je viens d'y passer une heure sans succès, donc si quelqu'un pouvait me mettre sur une piste, ça m'aiderait bien.
 
Merci d'avance à ceux qui voudront bien m'aider,  :jap:  

Reply

Marsh Posté le 25-05-2012 à 11:21:26   

Reply

Marsh Posté le 25-05-2012 à 14:01:46    

Bonjour,
je ne comprends pas le problème.
 
Ça, ça fonctionne très bien :

Code :
  1. Sub toto()
  2.     Dim col As String
  3.     col = "C"
  4.     Range(col & "6" ).Select
  5. End Sub


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 25-05-2012 à 15:17:51    

Si dans ma cellule E9 l'utilisateur saisit "C" et que mon code est le suivant, ça ne marche pas (mes cellules sont vides) :
 

colonne_mdd_nom_table = ThisWorkbook.Sheets("6-Macros d'aide à la MAJ" ).Range("E9" ).Value
While Workbooks("XL_DMM_10.7.02.xls" ).Sheets("XL_DMM" ).Range(colonne_mdd_nom_table & 2 + j).Value <> ""


 
Alors que si j'écris :

While Workbooks("XL_DMM_10.7.02.xls" ).Sheets("XL_DMM" ).Range("C" & 2 + j).Value <> ""


Là ça fonctionne. Je suppose qu'il y a quelque part un problème de conversion de la valeur, qui doit être mal comprise par Excel, mais je ne sais pas où.

Reply

Marsh Posté le 25-05-2012 à 15:34:27    

Et si tu fais ça, ça marche ?

Code :
  1. colonne_mdd_nom_table = "C"
  2. While Workbooks("XL_DMM_10.7.02.xls" ).Sheets("XL_DMM" ).Range(colonne_mdd_nom_table & 2 + j).Value <> ""


 
Si oui, c'est que le problème se situe là :

Code :
  1. colonne_mdd_nom_table = ThisWorkbook.Sheets("6-Macros d'aide à la MAJ" ).Range("E9" ).Value


Du coup, ajoute un message pour voir quelle valeur prend ta variable :

Code :
  1. Msgbox colonne_mdd_nom_table


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 25-05-2012 à 15:42:38    

vave a écrit :

Et si tu fais ça, ça marche ?

Code :
  1. colonne_mdd_nom_table = "C"
  2. While Workbooks("XL_DMM_10.7.02.xls" ).Sheets("XL_DMM" ).Range(colonne_mdd_nom_table & 2 + j).Value <> ""



Non, ça ne fonctionne pas non plus.
 
(J'ai ajouté un Msgbox, ça ne coute rien, et il me confirme bien que ma variable vaut C.)

 
Je n'avais pas remplacé au bon endroit.
Finalement ça fonctionne. Voilà qui me semble très étrange...  [:gordon shumway]  
Comme j'ai rajouté d'autres choses dans mon code entre temps, je suppose qu'il y avait une erreur quelque part et que je l'ai corrigée malgré moi.
 
Merci beaucoup pour ton aide  :)


Message édité par $temp le 25-05-2012 à 15:48:38
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed