FORUM Tom's Hardware » Programmation » VB / VBA / VBS » macro pour transfert de données avec mise en forme
 

macro pour transfert de données avec mise en forme

Il y a 245 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : macro pour transfert de données avec mise en forme
 
Plus d'informations

:??:  
Hello!
Quelqu'un peut-il m'aider?
je dois créer une macro et je n'ai que très peu de connaissance...

Plus d'informations

suite....
(ça commence bien)
bon alors je m'explique:
J'ai sur ma feuilles 1 , allant des colonnes C à G et de la ligne 2 à 198 des données sous forme de nombres entiers allant de 1 à 50.
Je dois les transférer sur la feuille 2 dans des colonnes numérotées de 1 à 50 sous forme des cases grisées.
Ex : sur la feuille 1 ligne 2 de la case C2 à G2 j'ai respectivement les nombres 37, 21, 14, 43, 22. La macro devra donc aller griser les cases de la feuille 2, ligne 2 , colonnes 38, 22, 15, 44, 23.
puis pareil avec les 196 autres lignes.
Merci par avance de votre aide.
Spice

zeb
Profil : Modérateur libre
Plus d'informations
Plus d'informations


 
bon ben je n'ai pas tout compris.
j'ai été polie...
J'avais besoin d'aide.
j'ai bien cherché dans le forum....mais je n'ai pas trouvé...
Voilà pourquoi je vous solicite.
 
merci quand même pour votre bienveillante réponse
bonne journée

zeb
Profil : Modérateur libre
Plus d'informations

KangOl a écrit :

Nous ne faisons pas le travail à votre place.
Tout sujet concernant une demande de résolution de TP ou d'exercice sera immédiatement fermé.


Dura lex, sed lex.

 

Comme il n'y pas a de question, je me demandais : exiges-tu que nous le fassions à ta place ?
Bien sûr que non. Je t'invite donc à poser une question précise sur un travail que tu aurais commencé mais que tu n'arriverais pas à conclure.
Un extrait de code serait le bienvenu.


Message édité par zeb le 20-11-2007 à 14:05:43

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

Ah! ok!
Bien sur que je n'exige rien du tout. Je suis juste perdue et je cherche de l'aide.
J'ai eu une formation rapide pour mon boulot ce vendredi au cours de laquelle j'ai créé une macro.
Mais pour m'exercer et ne pas perdre mes acquis qui sont très faibles malheureusement, je pratique chez moi , pour moi...Ce n'est ni pour un devoir, ni pour un TP et ni pour mon travail.
Il est vrai que j'aurais du vous envoyer ce que j'ai déjà fait cad pas grand chose , mais c'est ma première macro perso alors je bloque.
D'ailleurs je ne sais même pas insérer une macro dans le forum....
Bon je vais essayer....
A plus tard et merci pour votre explication .

Plus d'informations


Sub Macro5()
'
' Macro5 Macro
' Macro enregistrée le 18/11/2007 par spice
'
 
'
 
    Dim n As Integer
 
    Sheets("feuil1" ).Range("C2:G2" ).Select
    For n = 1 To 50
        If Value = n Then
            goto Sheets("Feuil2" ).range(Cells(2,(n+1)).Select 'cette ligne n'est pas validée'
            Selection.Interior.ColorIndex = 15
        End If
    Next
         
End Sub
 
 
Voilà la macro que j'ai créé , qui doit correspondre à ce que je vous ai décrit précédemment.  
Qu'est-ce qui ne va pas dans la ligne qui n'est pas validée?
comment l'étendre au reste des lignes?
J'ai un autre problème,  je n'arrive pas à l'activer pour la tester.
 
merci par avance de l'aide que vous pourriez m'apportée.
Bonne journée

zeb
Profil : Modérateur libre
Plus d'informations

>> Je suis juste perdue et je cherche de l'aide.
Bienvenue sur PPC :)

 

>> Ce n'est ni pour un devoir, ni pour un TP et ni pour mon travail.
Nous n'interdisons pas l'aide aux devoirs, aux TPs ni au boulot. Au contraire. Ce qui est interdit, c'est de balancer un énoncé et d'attendre que quelqu'un d'autre le fasse à l'oeil. C'est honteux si c'est pour un travail rémunéré, inutile si c'est un travail scolaire.

 

>> ce que j'ai déjà fait cad pas grand chose
C'est déjà ça. Les néophytes sont acceptés.

 

J'ai sur ce site deux casquettes : Je suis d'une part un membre très actif qui apporte volontiers son aide sur tout ce qui touche à Excel et VB en particulier. Et d'autre part, je suis modérateur. Je dois animer cette partie du forum ( :) ) et y faire respecter le règlement ( http://forum-images.hardware.fr/images/perso/sedna.gif ), lequel tu ne respectes toujours pas. Retourne le lire, srtout en ce qui concerne l'usage de la balise [code].

  

EDIT: ( Je retire ma casquette de méchant modérateur ) Il semble que tu nous écrives des Amériques :/ Ces messages ne vont être interactifs qu'à douze heure de décalage. Dommage, j'ai pas mal de choses (trucs, astuces, bonnes façons de faire) à te proposer. Si tu es patient, pas de problème. :)


Message édité par zeb le 21-11-2007 à 10:02:57

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

Gentil modérateur, :)
 
Je n'écris pas des Amériques mais la journée, je bosse.... un peu...:D
 
Je suis très patientE et très interesséE par tes trucs, astuces et bonne façons de faire que tu me proposes. Je les cherche sur le net depuis plusieurs jours mais visiblement , je ne suis pas très douéE.
Au plaisir de te lire cher Zeb!

zeb
Profil : Modérateur libre
Plus d'informations

Tu l'as lu ce règlement ?
http://site.voila.fr/zulu-echo-bravo/img/balisecodeppc.png
 
Comme tu es une fille, et que tu sembles très gentille ( :kaola: à tous les autres ), je vais commencer à t'aider avant que tu ais mis ce message http://www.presence-pc.com/forum/p [...] htm#t36633 correctement en forme.
 
Tu veux colorier une case. D'accord. En fonction d'une autre. Encore d'accord.
Et ça, cinquante fois. Bien.
 
Donc il faut regarder la valeur d'une cellule, d'une feuille.
Relisons la phrase à l'envers pour faire un travelling avant :
 
feuille/cellule/valeur
 
Demandons la traduction de ces mots :

Français           | VBA/Excel
-------------------+-------------------
Feuille            | Sheet
Feuilles           | Sheets
Feuille de calcul  | Worksheet
Feuilles de calcul | Worksheets
Cellule            |  
Cellules           | Cells / Range
Valeur            | Value


 
Donc plutôt que de considérer les feuilles, on ne va considérer que les feuilles de calcul.
Curieusement, UNE cellule, ça n'existe pas en VBA/Excel. Par contre, une plage de plusieurs cellules, ça existe.
Tu te souviens de tes cours de maths du collège ? Un ensemble de 1 élément, ça reste un ensemble. Pour nos besoins, nous
considérerons des plages (Range) de une cellule.
 
Or, donc. Regardons la valeur de la cellule B3 de la feuille de calcul Feuil1 :

Code :
  1. Sub Toto()
  2.     Debug.Print WorkSheets("Feuil1" ).Range("B3" ).Value
  3.     Debug.Print WorkSheets("Feuil1" ).Cells(3, 2).Value
  4. End Sub


 
Si tu ne vois rien, ouvre l'éditeur VB et appuye sur CTRL+G. Cela ouvre la fenêtre Exécution.
Debug.Print permet d'écrire dans cette fenêtre. Pratique pour la mise au point ;)
 
Les fonctions Range et Cells, pour une cellule, sont équivalentes.
 
Maintenant, colorions une cellule :

Code :
  1. Sub Toto()
  2.     WorkSheets("Feuil1" ).Range("B3" ).Interior.ColorIndex = 15
  3.     WorkSheets("Feuil1" ).Cells(3, 2).Interior.ColorIndex = 15
  4. End Sub


 
Bon. Maintenant on revient à l'énoncé.
 
Lire la valeur dans Feuil1/B3. Nous y lisons 12, par exemple. Il faut donc colorier Feuil2/L3 :
 

Code :
  1. Dim valeur As Integer
  2. valeur = WorkSheets("Feuil1" ).Cells(3, 2).Value
  3. WorkSheets("Feuil2" ).Cells(3, valeur).Interior.ColorIndex = 15


 
x 50
 

Code :
  1. Dim valeur As Integer
  2. Dim colonne As Integer
  3. For colonne = 1 To 50
  4.     valeur = WorkSheets("Feuil1" ).Cells(3, colonne).Value
  5.     WorkSheets("Feuil2" ).Cells(3, valeur).Interior.ColorIndex = 15
  6. Next


 
Bon, maintenant, on fait varier la ligne :
 

Code :
  1. Dim valeur As Integer
  2. Dim colonne As Integer
  3. Dim ligne As Integer
  4. For ligne = 2 To 196
  5.     For colonne = 1 To 50
  6.         valeur = WorkSheets("Feuil1" ).Cells(ligne, colonne).Value
  7.         WorkSheets("Feuil2" ).Cells(ligne, valeur).Interior.ColorIndex = 15
  8.     Next
  9. Next


 
Et voilà !


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

:)
Yes!
C'est trop fort!
ça marche!
C'est génial!
<:o)
Voilà ma macro définitive!
 

Code :
  1. Sub Macro5()
  2. '
  3. ' Macro5 Macro
  4. ' Macro enregistrée le 18/11/2007 par spice
  5. '
  6.     Dim valeur As Integer
  7.     Dim colonne As Integer
  8.     Dim ligne As Integer
  9.     For ligne = 2 To 198
  10.         For colonne = 2 To 6
  11.             valeur = Worksheets("Feuil1" ).Cells(ligne, colonne).Value
  12.             Worksheets("Feuil2" ).Cells(ligne, valeur + 1).Interior.ColorIndex = 15
  13.         Next
  14.     Next
  15.     For ligne = 2 To 198
  16.         For colonne = 7 To 8
  17.             valeur = Worksheets("Feuil1" ).Cells(ligne, colonne).Value
  18.             Worksheets("Feuil2" ).Cells(ligne, valeur + 51).Interior.ColorIndex = 15
  19.         Next
  20.     Next
  21.    
  22.        
  23. End Sub


 
C'est excellent!!!
 
Merci Oh grand Zeb pour toutes ces explications!
J't'adore!(A)
Il va falloir que je me trouve un autre exercice pour faire encore appel à ton savoir. :$
A très vite
Biz (k)
 
PS: le collège est trop loin pour que je me souvienne de mes cours de maths....


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » macro pour transfert de données avec mise en forme
 

Annonces Google
Publicité