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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2076431
vincent130​09
Je fais mon possible
Posté le 16-05-2011 à 20:24:48  profilanswer
 

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

mood
Publicité
Posté le 16-05-2011 à 20:24:48  profilanswer
 

n°2076626
dje69r
Arme de distraction massive
Posté le 17-05-2011 à 15:17:21  profilanswer
 

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


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2076653
vincent130​09
Je fais mon possible
Posté le 17-05-2011 à 17:51:06  profilanswer
 

Super ça marche
 
Merci beaucoup

n°2076661
dje69r
Arme de distraction massive
Posté le 17-05-2011 à 18:01:43  profilanswer
 

Je veux que ca marche ;)
 
:jap:


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !

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

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

 

Sujets relatifs
Différence finie sous ExcelProgrammation différence finie sous Excel
protection par popup accès index.htmlAffichage UserForm Excel
VBA Access Excel[VBA] manipulation de vecteurs
Effectuer une somme avec condition sous excel 
Plus de sujets relatifs à : EXCEL VBA - Utilisation chemin d'accès d'1 formule


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