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
- Insertion liste déroulante excel - Guide
- Insertion signature word - Guide
- Insertion sommaire word - Guide
- Touche insertion clavier - Guide
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 745
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
4 janvier 2024
2 745
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
4 janvier 2024
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
4 janvier 2024
2 745
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
4 janvier 2024
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 !