Boucle et insertion de valeur
Résolu/Fermé
Ch1ken
Messages postés
53
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
17 janvier 2017
-
Modifié par pijaku le 10/02/2016 à 09:15
Ch1ken Messages postés 53 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 17 janvier 2017 - 10 févr. 2016 à 15:16
Ch1ken Messages postés 53 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 17 janvier 2017 - 10 févr. 2016 à 15:16
A voir également:
- Boucle et insertion de valeur
- Pc s'allume et s'éteint en boucle - Forum Matériel informatique
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Excel
- Pièce 2 euros dessin bonhomme valeur ✓ - Forum Loisirs / Divertissements
- Insertion liste déroulante excel - Guide
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
10 févr. 2016 à 09:23
10 févr. 2016 à 09:23
Bonjour,
Pour bien débuter en VBA, pense à ne jamais utiliser .Select en boucle.
Regarde ce que fait ce code et si cela te convient :
Pour bien débuter en VBA, pense à ne jamais utiliser .Select en boucle.
Regarde ce que fait ce code et si cela te convient :
Sub Submit()
Dim HeureSaisie
HeureSaisie = Range("HourProject").Value
With Sheets("HProgrammation")
.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Value = HeureSaisie
End With
End Sub
Ch1ken
Messages postés
53
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
17 janvier 2017
6
10 févr. 2016 à 09:31
10 févr. 2016 à 09:31
Bonjour Pijaku,
Merci beaucoup pour ta réponse, ton code fonctionne parfaitement !
Pourrais-tu, si tu as le temps et que tu le veux bien, m'expliquer brièvement ton code ?
Merci encore et bonne journée !
Cordialement,
Ch1ken
Merci beaucoup pour ta réponse, ton code fonctionne parfaitement !
Pourrais-tu, si tu as le temps et que tu le veux bien, m'expliquer brièvement ton code ?
Merci encore et bonne journée !
Cordialement,
Ch1ken
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
10 févr. 2016 à 09:56
10 févr. 2016 à 09:56
Pas de souci.
Ce bloc nous a permis de travailler sans changer de feuille active...
Dim HeureSaisie: Décaration d'une variable. Ici je ne l'ai pas typée ne sachant pas quel type de valeur (date, nombre, caractères, etc) celle-ci devait contenir.
HeureSaisie = Range("HourProject").Value : Stocke, dans notre variable, la valeur contenue dans la cellule nommée HourProject
With Sheets("HProgrammation") : Indique au programme que nous allons travailler sur l'objet référencé. Ici l'objet est la feuille HProgrammation. Nous n'activons pas cette feuille, c'est inutile. ==> Pas de Select, pas d'Activate...
.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Value = HeureSaisie : Ici, on dit que la valeur valuede la cellule en dessous de
Offset(1, 0)la dernière cellule remplie de la colonne 1
Columns(1).Find("*", , , , , xlPrevious) est égale au contenu de notre variable = HeureSaisie.
End With: Fin du bloc With, on ne travaille plus sur l'objet.
Ce bloc nous a permis de travailler sans changer de feuille active...
Ch1ken
Messages postés
53
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
17 janvier 2017
6
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
10 févr. 2016 à 10:20
10 févr. 2016 à 10:20
Merci encore pour toutes ces explications et pour le temps que tu m'as consacré !
Très bonne journée à toi,
Amicalement,
Ch1ken
Très bonne journée à toi,
Amicalement,
Ch1ken
Ch1ken
Messages postés
53
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
17 janvier 2017
6
10 févr. 2016 à 13:10
10 févr. 2016 à 13:10
Dans le code que tu m'as fourni, pour rappel :
Sub submit()
Dim HeureSaisie
HeureSaisie = Range("HourProject").Value
With Sheets("HProgrammation")
.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Value = HeureSaisie
End With
End Sub
Est-il possible de changer la nomination de la page "HProgrammation" par une cellule ? Je m'explique, les heures saisies doivent l'être sur 3 cours différents et le cours de programmation est le premier cours. Dans la page de saisie, j'ai créé une liste déroulante avec les 2 autres cours. J'aurai aimé que les données viennent s'inscrire dans la page correspondante au cours que l'utilisateur aura sélectionné.
J'ai tenté de nommer cette cellule et de changer la feuille dans ton code :
With Sheets(CoursePage)
CoursePage étant le nom de la cellule qui contient le nom du cours, mais cette méthode ne fonctionne pas. J'aurais également aimé pouvoir changer le numéro de colonne à la ligne juste avant le "End With" de la même manière car chaque colonne représente 1 mois. La colonne 1 se rapporte à Août 2016 mais Septembre devrait se trouver dans la 2ème colonne.
Je ne sais pas si j'ai été assez clair ?
Ce serait vraiment très aimable de me répondre encore une fois de plus.
Merci d'avance et très bonne journée.
Amicalement,
Ch1ken
Sub submit()
Dim HeureSaisie
HeureSaisie = Range("HourProject").Value
With Sheets("HProgrammation")
.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Value = HeureSaisie
End With
End Sub
Est-il possible de changer la nomination de la page "HProgrammation" par une cellule ? Je m'explique, les heures saisies doivent l'être sur 3 cours différents et le cours de programmation est le premier cours. Dans la page de saisie, j'ai créé une liste déroulante avec les 2 autres cours. J'aurai aimé que les données viennent s'inscrire dans la page correspondante au cours que l'utilisateur aura sélectionné.
J'ai tenté de nommer cette cellule et de changer la feuille dans ton code :
With Sheets(CoursePage)
CoursePage étant le nom de la cellule qui contient le nom du cours, mais cette méthode ne fonctionne pas. J'aurais également aimé pouvoir changer le numéro de colonne à la ligne juste avant le "End With" de la même manière car chaque colonne représente 1 mois. La colonne 1 se rapporte à Août 2016 mais Septembre devrait se trouver dans la 2ème colonne.
Je ne sais pas si j'ai été assez clair ?
Ce serait vraiment très aimable de me répondre encore une fois de plus.
Merci d'avance et très bonne journée.
Amicalement,
Ch1ken
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
10 févr. 2016 à 14:12
10 févr. 2016 à 14:12
Passe par une variable de type String.
Sub submit()
Dim HeureSaisie
Dim maFeuille As String
HeureSaisie = Range("HourProject").Value
maFeuille = Range("CoursePage").Value
With Sheets(maFeuille)
.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Value = HeureSaisie
End With
End Sub
Ch1ken
Messages postés
53
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
17 janvier 2017
6
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
Modifié par Ch1ken le 10/02/2016 à 14:23
Modifié par Ch1ken le 10/02/2016 à 14:23
Merci pour ta réponse Pijaku mais ca ne fonctionne malheureusement pas :(
Voici l'intitulé de l'erreur : "Run-time error '1004':
Method 'Range' of object '_Global' failed"
MODIF : Non je n'ai rien dit, il s'agissait en fait du nom de cellule CoursPage, voilà la raison de l'erreur :)
S'agit-il de la même logique pour le numéro de colonne ? J'imagine... je vais tester et rendre réponse ici.
Quoi qu'il en soit, merci encore à toi Pijaku pour ton super soutien !
Voici l'intitulé de l'erreur : "Run-time error '1004':
Method 'Range' of object '_Global' failed"
MODIF : Non je n'ai rien dit, il s'agissait en fait du nom de cellule CoursPage, voilà la raison de l'erreur :)
S'agit-il de la même logique pour le numéro de colonne ? J'imagine... je vais tester et rendre réponse ici.
Quoi qu'il en soit, merci encore à toi Pijaku pour ton super soutien !
Ch1ken
Messages postés
53
Date d'inscription
vendredi 10 avril 2009
Statut
Membre
Dernière intervention
17 janvier 2017
6
10 févr. 2016 à 15:16
10 févr. 2016 à 15:16
Voilà, le code fonctionne parfaitement, j'ai même encore rajouté un bouton (macro delete) qui permet de supprimer la dernière entrée du tableau. Voici mon code :
Merci encore pijaku et bonne journée à tout le monde !
Sub submit()
Dim HeureSaisie
Dim Page As String
Dim Column As Integer
HeureSaisie = Range("HourProject").Value
Page = Range("CoursPage").Value
Column = Range("ColumnMonth").Value
With Sheets(Page)
.Columns(Column).Find("*", , , , , xlPrevious).Offset(1, 0).Value = HeureSaisie
End With
End Sub
Sub Delete()
Dim Page As String
Dim Column As Integer
Page = Range("CoursPage").Value
Column = Range("ColumnMonth").Value
With Sheets(Page)
.Columns(Column).Find("*", , , , , xlPrevious).ClearContents
End With
End Sub
Merci encore pijaku et bonne journée à tout le monde !