EXCEL VBA - Utilisation chemin d'accès d'1 formule

EXCEL VBA - Utilisation chemin d'accès d'1 formule - VB/VBA/VBS - Programmation

Marsh Posté le 16-05-2011 à 20:24:48    

Bonjour,
 
Je me permets de vous solliciter concernant une question que je me pose sous Excel ; je vais essayer de vous exposer clairement ma réflexion/question :
 
Je travaille régulièrement (voir quotidiennement) sur un fichier Excel que l’un de mes clients m’envoie  
 
Celui-ci se décompose en plusieurs onglets :
1) Plusieurs onglets permettant à l’utilisateur (moi) de procéder à la saisie de chiffres (les champs de saisie se trouvent aléatoirement dans plusieurs colonnes)
2) Un onglet récapitulatif des saisies sous forme de base de données (qui se remplit automatiquement)
 
Exemple concret :
 

  • Feuille 1

L’utilisateur vient saisir des valeurs selon plusieurs champs
 
Exemple : saisie de chiffres dans les cellules suivantes :
A1  
B4
D3
 

  • Feuille 2

L’utilisateur vient saisir des valeurs selon plusieurs champs
 
Exemple : saisie de chiffres dans les cellules suivantes :
B3
A2
E4
 

  • Feuille 3  

Tableau récapitulatif des différentes valeurs saisies ; ce tableau se remplit automatiquement car le Client à déjà mis ses formules du type :
 
A1 = ARRONDI(Feuille1!A1 ;1)
A2 = ARRONDI(Feuille1!B4 ;1)
A3 = ARRONDI(Feuille1!D3 ;1)
A4 = ARRONDI(Feuille2!B3 ;1)
A5 = ARRONDI(Feuille2!A2 ;1)
A6 = ARRONDI(Feuille2!E4 ;1)
 
=> Mon souhait est de créer une macro dont le but est d’utiliser les formules déjà présentes dans le fichier pour renseigner les différents onglets.
 
Je m’explique :  
1) création sur la Feuille 3 d’une colonne B  
2) saisie des données (des chiffres) directement dans la colonne B de la feuille 3
3) lancement de la macro
Celle-ci vient copier la valeur saisie dans la colonne B de la feuille 3 et la colle dans la cellule de l’onglet désignée grâce aux renseignements que donne la formule du Client se trouvant dans la colonne A de la feuille 3
 
Exemple :  
Feuille 3 -> l'utilisateur procède à la saisie d'une valeur dans la cellule B2
Feuille 3 -> A2 = ARRONDI(Feuille1!B4 ;1)
La macro copie la valeur se trouvant en B2 de la feuille 3 pour la coller dans la feuille 1 en B4  
 
Mais problème, je bloque  :bounce: !!! Avez-vous une idée :??:  ?
 
Merci d’avance

Reply

Marsh Posté le 16-05-2011 à 20:24:48   

Reply

Marsh Posté le 17-05-2011 à 15:17:21    

Vu la qualité du post, je ne peux que m'y interresser, pour une fois...
 

Code :
  1. Sub vincent13009()
  2. 'On determine la derniere ligne où tu as saisi en colonne B de la feuille (ici la feuil3)
  3.    DerLigne = Range(Range("B1" ).End(xlDown).Address).Row
  4.  
  5. 'On boucle sur chaque ligne pour regarder ce qu'il y a dans la cellule de la colonne A (en l'occurence tes formules d'arrondi)
  6.    For x = 1 To DerLigne
  7.  
  8. 'On stocke la valeur que tu saisis en colonne B
  9.        NouvelleValeur = Cells(x, 2).Value 'Où x et la ligne, et 2 la colonne (A=1 ; B=2 etc.)
  10. 'On regarde ce qu'il y a en colonne A
  11.        ValCell = Cells(x, 1).Formula 'Où x et la ligne, et 1 la colonne (A=1 ; B=2 etc.)
  12.    
  13. 'il nous faut donc extraire la cellule. On va donc chercher les informations qui permettent de la retrouver.
  14. 'En l'occurence, la cellule sera toujours, si je ne m'abuse du point d'exclamation délimitant la feuille et une virgule
  15.       'pour les décimal d'arrondi
  16.      
  17. 'On cherche donc le !
  18.        PointInterro = InStr(1, ValCell, "!", vbTextCompare) + 1
  19. 'On cherche donc la ,
  20.        Virgule = InStr(1, ValCell, ",", vbTextCompare)
  21. 'on sait donc où se trouve la reference a notre cellule. On fait ca car tu pourrais avoir des cellule du type AA1.
  22.        CelluleTrouvee = Mid(ValCell, PointInterro, Virgule - PointInterro)
  23.    
  24. 'On fait pareil pour extraire la feuille. On a deja le point d'exclamation, on a juste a chercher la parenthese ouvrante
  25. 'On cherche donc la (
  26.        Parenthese = InStr(1, ValCell, "(", vbTextCompare) + 1
  27. 'on sait donc où se trouve la reference a notre feuille.
  28.        FeuilleTrouvee = Mid(ValCell, Parenthese, PointInterro - Parenthese - 1)
  29.    
  30.    
  31. 'On met donc ta valeur saisie de la colonne B au bon endroit
  32.        Sheets(FeuilleTrouvee).Range(CelluleTrouvee).Value = NouvelleValeur
  33.    
  34.    Next x
  35. End Sub


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 17-05-2011 à 17:51:06    

Super ça marche
 
Merci beaucoup

Reply

Marsh Posté le 17-05-2011 à 18:01:43    

Je veux que ca marche ;)
 
:jap:


---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

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