Incrémentation de cellules

Résolu/Fermé
F-RAGU Messages postés 19 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 4 octobre 2009 - 20 août 2009 à 08:47
F-RAGU Messages postés 19 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 4 octobre 2009 - 20 août 2009 à 14:36
Bonjour,

Je réalise un petit programme où je dois entrer une longueur donnée sur une feuille nommé "Saisie". Sur une autre feuille nommée "Calculs", je voudrais que cette longueur soit décomposée afin de pouvoir calculer des paramètres tous les 10 cm.

Voici un exemple parlant :

Sur la cellule A1 de la feuille "'Saisie", je rentre lz longueur désirée : ici 15m

Sur la feuille "Calculs", le programme doit automatiquement remplir les cellules de la colonne B, de 0 à 15m, tous les 0,1m soit :

0
0,1
0,2
.
.
.
15


Le principe est simple mais je ne vois pas trop comment programmer le tout. Si vous pouviez me filer quelques tuyaux ça serait sympa !!

Merci

F-RAGU.

6 réponses

F-RAGU Messages postés 19 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 4 octobre 2009
20 août 2009 à 08:51
Pour info j'utilise Excel ^^
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
20 août 2009 à 13:18
Bonjour,

Dans vba, mets ce code :

sub longueur
dim i,j,a as string
i=1
j=1
longueur = cells(i,j) 'ta variable longueur sera égale à la longueur entrée
cells(i+1,j+1) = 0

for a= 0 to longueur
cells(i+2,j+1) = a+0,1
i=i+1
next a

end sub

pour le mettre dans vba : outils macro vba ou visual basic editor
si tu n'as pas de module, insertion module et tu copies et colle le code donné.
Pour l'activer, tu peux associer la macro à un bouton. ou dans outils macro et tu choisis la macro à éxécuter.
0
F-RAGU Messages postés 19 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 4 octobre 2009
20 août 2009 à 13:45
S'agissant d'une fonction, il me semble qu'on peux appeler la longueur dans n'importe quelle cellule de n'importe quelle feuille non et renvoie le résultat où on se positionne?

Voici les coordonnées :

cellule où on demande la longueur : C47 dans feuilles Saisie
pour l'incrémentation : colonne C feuille Colonne

J'avais posé une question similaire avant mais comme personne ne m'avais répondu...


Cordialement,


F-RAGU
0
F-RAGU Messages postés 19 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 4 octobre 2009
20 août 2009 à 13:59
Salut Mélanie1324,


J'ai essayé ton programme mais il doit y avoir un problème au niveau de longueur. En effet VBE me dit que la fonction ou variable (en me montrant justement longueur) est attendue. Je crois que ça dit venir de la déclaration de longueur en tant que variable
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
20 août 2009 à 13:59
Une autre méthode que celle (très bien d'ailleurs) de melanie1234 :
Copier ce code, le coller dans un module (ALT + F11 , Insertion/Module)

Sub increment()
Dim i As Integer, j As Integer, k As Integer
i = Sheets("Saisie").Range("C47").Value
With Sheets("Calculs")
.Columns("C:C").ClearContents
For j = 2 To 10 * i
.Range("C" & j).Value = (j / 10) - 0.1
Next
.Range("C1").Value = 0
.Range("C65536").End(xlUp).Offset(1, 0).Value = i
End With
End Sub

Fermer la fenêtre Microsoft Visual Basic.

Pour que cela se fasse automatiquement, il faut appeler cette fonction par :
1- un bouton (boîte à outils controles/bouton de commande)
2- ALT + F8 cliquer sur increment et Exécuter
3- Clic droit sur l'onglet de la feuille saisie/visualiser le code et coller ces 3 lignes :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call increment
End Sub
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
20 août 2009 à 14:00
bonjour
a adapter (C47 au lieu de A1 et C au lieu de B
attention l'incrément 0,1 ou autre doit être noté 0.1

Sub morceller(longueur As Byte, col As String, inc As Single)
lig = 1
Columns(col & ":" & col).ClearContents
For cptr = 0 To longueur Step inc
Sheets("calcul").Range(col & lig) = Application.Round(cptr, 1)
lig = lig + 1
Next
End Sub

Sub test()
Application.ScreenUpdating = False
morceller Sheets("saisie").Range("A1"), "B", 0.1
End Sub
0
F-RAGU Messages postés 19 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 4 octobre 2009
20 août 2009 à 14:09
Merci à tous pour vos réponses !!! ton programme fonctionne pijaku.
Y a-t-il éventuellement moyen de l'adapter en macrofonction, c'est-à-dire de ne pas avoir systématiquement besoin de l'activer par ds touches ou bouton raccourci?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
20 août 2009 à 14:25
oui comme je te l'ai expliqué par avant :

3- Clic droit sur l'onglet de la feuille saisie/visualiser le code et coller ces 3 lignes :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call increment
End Sub

ps : tu peux sans crainte utiliser la fonction de michel_m ce gars là est trop fort.... ;-)
0
F-RAGU Messages postés 19 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 4 octobre 2009
20 août 2009 à 14:36
Cela fonctionne ! Merci à tous pour vos contributions


F-RAGU
0