Programmation Excel Macro

[Résolu]
Signaler
Messages postés
37
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
5 juillet 2008
-
Messages postés
37
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
5 juillet 2008
-
Bonjour, alors j'ai créé un bouton sur excel.
Je clic deux fois dessus sur le bouton et j'arrive sous VB.
(Private Sub CommandButton1_Click()


End Sub)

Dans mon classeur je dispose d'une feuille objectif et d'une feuille coeff.
 Tout d'abord pourriez vous me fournir la commande pour créer une feuille 'Résultat' si elle n'est pas déjà créé svp.

Ensuite c'est un peu compliqué:
Je dois tout d'abord copier ma première ligne entête dans ma page 'Résultat'.
Après je parcours ma première ligne qui contient Mon code Pays, mon code client, mon code secteur, CA1, CA2.
Je copie cette ligne et je rajoute à la fin CA1*Coeff Janvier et CA2*Coeff Janvier.
Je recopie la ligne et je rajoute à la fin CA1*Coeff Février et CA2*Coeff Février.
Je recopie la ligne et je rajoute à la fin CA1*Coeff Mars et CA2*Coeff Mars.
Etc...
Les Coeff de chaque mois se trouve sur ma feuille Coeff.

Pourriez vous m'aider à réaliser cette manipulation svp.

9 réponses

Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
bonjour
pour ajouter une feuille voir la commande Add
pour copier des cellules  d'une feuille à l'autre
feuil(1).range("A1:E1").Copy
feuil(2).Paste
 ou encore si les emplacements ne sont pas les memes
feuil(2).Range("A2;E2") = feuil(1).range("A1:E1")

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Pour tes questiosn FUTURES  saches que tu travaille en VBA et qu'il possède sa propre section.

[infomsg.aspx Thèmes]

/ [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA]
Private Sub CommandButton1_Click()
Dim Ws As Worksheet
Dim Created As Boolean
'pour créer que si n'existe pas
   For Each Ws In ActiveWorkbook.Worksheets
       If Ws.Name = "Résultat" Then
           Created = True
           Exit For
       End If
   Next
   
   If Not Created Then
       Set Ws = ActiveWorkbook.Worksheets.Add
       Ws.Name = "Résultat"
   End If

End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

Pour la suite regarde l'objet Range

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
37
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
5 juillet 2008

Super c'est exactement ce qui me faut.
Par contre pour l'objet range auriez vous un exemple svp.
Ma première page s'appelle "Objectifs pour 2008" et l'autre "Résultat".

 Par exemple pour copier la première ligne je dois faire:
Objectifs pour 2008.Range("A2;E2") = Résultat.range("A1:E1")
 Pourriez vous m'aider au niveau de la synthaxe svp.

A part ça, ptit exemple:
Je souhaite faire une boucle pour faire le calcul suivant 
Feuille Objectifs pour 2008 'CA1' * Feuille Coeff 'Coeff Janvier'

En gros ça doit donner:
Tant que1 (On vérifie si on est toujours sur le mm client)
   Tant que 2 ( On vérifie si le secteur est différent)
       Pour 1 à 12
            Faire calcul plus haut pour Janvier à Décembre
            Insérer la ligne
         Fin Pour
    Fin Tant que 2
Fin Tant que 1

Pourriez vous m'aider svp ça serait top.
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
tant que  = Do While
fin tant que = Looppour 1 à 12  for x 1 to 12
fin pour = next x
consultes l'aide en ligne en faisant F1 pour les détails !

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
Messages postés
37
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
5 juillet 2008

D'accord. Il me manque plus que la synthaxe pour le range.
Ah si, est ce possible d'incrémenter le nom d'une cellule automatiquement?
Par exemple verticalement de A1 à B1?
ou horizontalement de A1 à A2?

Merci pour votre aide. C'est super sympa!
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
pour la syntaxe de range pareil que pour les autres  fais F1 et tu auras toutes les explications
en gros :
Range("A1").select   :selectionne la cellulle de la colonne A et de la rangée 1 c'est équivalent à Cells(1,1)
sachant que pour cells( a,b) A est la rangée et b la colonne
range("A1:C1").select  :sélectionne les cellules A,B et C de la ligne 1

tu mets ce code dans l'évenement click d'un bouton
x = x+1
cells(x, 1).select
à chaque appui sur ce bouton
tu verras  la selection  de cellule dans ta feuille se déplacer de rangée en rangée
avec cells(1,x) tu la verra se déplacer de colonne en colone
à chaque appui sur ce bouton

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
Messages postés
37
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
5 juillet 2008

Merci pour toutes ces explications.
J'ai encore 2 petites questions...

1) Peut-on définir un range directement sur une feuille??
Ex: Mafeuille.range(A1:E1).select

2) Quel commande permet de convertir les cellules avec un point en virgule?
ex: 8.5 en 8,5

Merci encore pour votre aide.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
1: le mieux est encore d'essayer non?
2: Essaie Replace

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
37
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
5 juillet 2008

Merci à tous j'ai réussi grâce à vos nombreux conseils!
C'était chaud pour les boucles mais j'ai géré.
Faut juste que je vois au niveau des paramètres et des formats des cellules.
Encore Merci. @+