Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2011, 19h29   #1
Invité de passage
 
Homme vincent
architecture navale
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme vincent
Localisation : France

Informations professionnelles :
Activité : architecture navale

Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 0
Points : 0
Par défaut input tableau- Calcul-output tableau

Bonsoir a tous!

çà y est je craque et demande humblement votre aide... j ai certainement pas compris un truc évident, je débute désolé

voila mon problème:

j ai une colonne (N) avec mes inputs je souhaiterai automatiser le calcul qui est sur le reste de ma feuille et coller trois résultat a coté de mes inputs.

input de N7 a N31 en D7

résultats du calcul en K14,K15 et G17

copie des résultats dans les colonne O,P,Q de 7 a 31.



voila ce que j ai fait en regardant des tutos et message sur les forum et.....ça marche pas


merci de votre aide
par ailleurs si vous connaissez des tutos pour automatiser des calcul et itération je suis preneur!


Aurevoir

Vincent

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub Macro7()
'
' Macro7 Macro
'
 
'
For x = 7 To 31 Step 1
 
    cells("D7") = cells("N", x)
    Range("K14").Select
    Selection.Copy
    Range("O", x).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("K15").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("P", x).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("G17").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("Q", x).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
Next x
 
End Sub
gvincentg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2011, 12h00   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonjour,
Pour une référence à une cellule on utilise Range(ReferenceTexte) ou Cells(Ligne,Colonne) ligne et colonne étant des nombres
Il faudrait donc ecrire pour cells("D7") = cells("N", x)
Code :
1
2
 
Cells(7,4) = Cells(x,14)
ou
Code :
1
2
 
Range("D7") = Cells(x,14)
et pour Range("P", x).Select
mais on peut aussi ecrire ceci
Code :
1
2
 
Range("P" & Cstr(x) )
Dans ce cas on transforme en texte la référence de la cellule
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2011, 19h44   #3
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonsoir,

As-tu essayé plus simplement avec

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Option Explicit
Sub Macro7()
Dim Ligne As Long 'N° de ligne
    With Worksheets("Feuil1") 'A adapter
    For Ligne = 7 To 31
        .Range("D7") = .Cells(Ligne, "N")
        .Cells(Ligne, "O") = .Range("K14").Value
        .Cells(Ligne, "P") = .Range("K15").Value
        .Cells(Ligne, "Q") = .Range("G17").Value
    Next Ligne
    End With
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2011, 22h28   #4
Invité de passage
 
Homme vincent
architecture navale
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme vincent
Localisation : France

Informations professionnelles :
Activité : architecture navale

Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 0
Points : 0
bonsoir,

merci beaucoup pour vos réponses très instructives.
Elles fonctionnent toutes les deux la seconde étant plus rapide à résoudre.

j ai quelques questions concernant seconde technique pourriez vous m expliquer la fonction Dim....as long et l utilité de with worksheet...

Par ailleurs si je souhaitais copier les infos dans une autre feuille comment aurais je pu faire?

Concernant la première que signifie la fonction & Cstr... ?


Merci encore et bonne soirée

vincent
gvincentg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 01h03   #5
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour, bonsoir ou bonne nuit, c'est selon ...,

Citation:
pourriez vous m expliquer la fonction Dim....as long et l utilité de with worksheet...
Concernant Dim , tu peux lire dans l’aide : l’instruction Dim déclare des variables et attribue de l'espace de stockage.
Le type de variable précise le type de la valeur stockée par la mémoire. Ainsi, le type « Long » est utilisé pour un entier compris entre -2 147 483 648 et 2 147 483 647.
Il est important d’attribuer un type adapté pour éviter de mobiliser inutilement la mémoire.

Concernant With, tu peux lire dans l’aide : l'instruction With permet d'appliquer une série d'instructions à l'objet indiqué, sans qualifier à chaque fois le nom de l'objet.
Ainsi, la série d’instruction suivante :
Code :
1
2
3
4
5
6
With Worksheets("Feuil1")
   .Range("D7") = .Cells(Ligne, "N")
   .Cells(Ligne, "O") = .Range("K14").Value
   .Cells(Ligne, "P") = .Range("K15").Value  
   .Cells(Ligne, "Q") = .Range("G17").Value
End with
est équivalente à :
Code :
1
2
3
4
Worksheets("Feuil1").Range("D7") = Worksheets("Feuil1").Cells(Ligne, "N")
Worksheets("Feuil1").Cells(Ligne, "O") = Worksheets("Feuil1").Range("K14").Value
Worksheets("Feuil1").Cells(Ligne, "P") = Worksheets("Feuil1").Range("K15").Value  
Worksheets("Feuil1").Cells(Ligne, "Q") = Worksheets("Feuil1").Range("G17").Value

Citation:
Par ailleurs si je souhaitais copier les infos dans une autre feuille comment aurais je pu faire?
Une solution :
Code :
1
2
3
4
5
6
With Worksheets("Feuil1")
Worksheets("Feuil2").Range("D7") = .Cells(Ligne, "N")
Worksheets("Feuil2").Cells(Ligne, "O") = .Range("K14").Value
Worksheets("Feuil2").Cells(Ligne, "P") = .Range("K15").Value  
Worksheets("Feuil2").Cells(Ligne, "Q") = .Range("G17").Value
End with
Citation:
que signifie la fonction & Cstr dans Range("P" & Cstr(x) ) ?
X représente le numéro de ligne, par exemple 12.
Cstr(x) permet de convertir la valeur numérique 12 en chaine de caractère "12".
& permet de concaténer les 2 chaines de caractères "P" et "12".
Range("P" & Cstr(x) ) se traduit donc : Range("P12")

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h29.


 
 
 
 
Partenaires

Hébergement Web