Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1133 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Transformer en numéro de colonne une saisie utilisateur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Transformer en numéro de colonne une saisie utilisateur

n°2143640
$temp
Posté le 25-05-2012 à 11:21:26  profilanswer
 

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:  

mood
Publicité
Posté le 25-05-2012 à 11:21:26  profilanswer
 

n°2143656
vave
Nice to meet me
Posté le 25-05-2012 à 14:01:46  profilanswer
 

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
n°2143674
$temp
Posté le 25-05-2012 à 15:17:51  profilanswer
 

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ù.

n°2143679
vave
Nice to meet me
Posté le 25-05-2012 à 15:34:27  profilanswer
 

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
n°2143686
$temp
Posté le 25-05-2012 à 15:42:38  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Transformer en numéro de colonne une saisie utilisateur

 

Sujets relatifs
Requête selon date de chaque enregistrementProblème largeur colonne d'un tableau PHP/CSS
EXTJS : ajouter un item à une colonne d'un gridExtraire le numéro de version d'un exe
Colonne qui change de nom toute seule dans SQL ServerRemettre a zéro les numéro auto
accès aux répertoires, fichiers en fonction du statut de l'utilisateurConnaitre l'utilisateur qui a lancé sudo qui a lancé mon programme ?
[MySQL] Mise à jour d'une colonne d'une table. 
Plus de sujets relatifs à : Transformer en numéro de colonne une saisie utilisateur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR