macro pour transfert de données avec mise en forme

Spicy Spice

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

Spicy Spice

Habitué
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
 

Spicy Spice

Habitué


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

Modérateur

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.
 

Spicy Spice

Habitué
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 .
 

Spicy Spice

Habitué
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

Modérateur
>> 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 (
Vous devez être connecté pour voir les images.
), 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. :)
 

Spicy Spice

Habitué
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

Modérateur
Tu l'as lu ce règlement ?
Vous devez être connecté pour voir les images.


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 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 :
[fixed]Français | VBA/Excel
-------------------+-------------------
Feuille | Sheet
Feuilles | Sheets
Feuille de calcul | Worksheet
Feuilles de calcul | Worksheets
Cellule |
Cellules | Cells / Range
Valeur | Value[/fixed]

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:
Sub Toto()
    Debug.Print WorkSheets("Feuil1").Range("B3").Value
    Debug.Print WorkSheets("Feuil1").Cells(3, 2).Value
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:
Sub Toto()
    WorkSheets("Feuil1").Range("B3").Interior.ColorIndex = 15
    WorkSheets("Feuil1").Cells(3, 2).Interior.ColorIndex = 15
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:
Dim valeur As Integer

valeur = WorkSheets("Feuil1").Cells(3, 2).Value
WorkSheets("Feuil2").Cells(3, valeur).Interior.ColorIndex = 15

x 50

Code:
Dim valeur As Integer
Dim colonne As Integer

For colonne = 1 To 50
    valeur = WorkSheets("Feuil1").Cells(3, colonne).Value
    WorkSheets("Feuil2").Cells(3, valeur).Interior.ColorIndex = 15
Next

Bon, maintenant, on fait varier la ligne :

Code:
Dim valeur As Integer
Dim colonne As Integer
Dim ligne As Integer

For ligne = 2 To 196
    For colonne = 1 To 50
        valeur = WorkSheets("Feuil1").Cells(ligne, colonne).Value
        WorkSheets("Feuil2").Cells(ligne, valeur).Interior.ColorIndex = 15
    Next
Next

Et voilà !
 

Spicy Spice

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

[cpp]
Sub Macro5()
'
' Macro5 Macro
' Macro enregistrée le 18/11/2007 par spice
'

Dim valeur As Integer
Dim colonne As Integer
Dim ligne As Integer

For ligne = 2 To 198
For colonne = 2 To 6
valeur = Worksheets("Feuil1").Cells(ligne, colonne).Value
Worksheets("Feuil2").Cells(ligne, valeur + 1).Interior.ColorIndex = 15
Next
Next
For ligne = 2 To 198
For colonne = 7 To 8
valeur = Worksheets("Feuil1").Cells(ligne, colonne).Value
Worksheets("Feuil2").Cells(ligne, valeur + 51).Interior.ColorIndex = 15
Next
Next


End Sub
[/cpp]

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....
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 126
Messages
6 717 811
Membres
1 586 365
Dernier membre
matiOs1
Partager cette page
Haut