Fonction à argument variable sur VBA (EXCEL)
Résolu/Fermé
rutabagans
Messages postés
15
Date d'inscription
mardi 26 août 2014
Statut
Membre
Dernière intervention
27 août 2014
-
Modifié par rutabagans le 26/08/2014 à 15:41
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 - 27 août 2014 à 16:26
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 - 27 août 2014 à 16:26
A voir également:
- Fonction à argument variable sur VBA (EXCEL)
- Fonction si et excel - Guide
- Liste déroulante excel - Guide
- Comment aller à la ligne sur excel - Guide
- Fonction moyenne excel - Guide
- Trier sur excel - Guide
9 réponses
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
26 août 2014 à 16:09
26 août 2014 à 16:09
slt,
essaye :
et tient moi au courant
userform2.textbox2.valuesont entre les guillemets donc VBA comsidere ce mot et l'écrit tel quel dans ta formule (i.e. aucun sens pour la fonction décaler)
essaye :
Selection.FormulaLocal = "=MOIS.DECALER((" & i & ",4);" & UserForm2.TextBox2.Value & ")"
et tient moi au courant
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 10:32
27 août 2014 à 10:32
Si Cdate ne marche pas c'est que le contenu de la case (i,4) ne peut pas être convertit en date.
ça vaudrait le coup que tu force le format de cette colonne à un format de date (celui que tu veux, par macro ou à a main) pour voir si ça change quoique ce soit
ça vaudrait le coup que tu force le format de cette colonne à un format de date (celui que tu veux, par macro ou à a main) pour voir si ça change quoique ce soit
rutabagans
Messages postés
15
Date d'inscription
mardi 26 août 2014
Statut
Membre
Dernière intervention
27 août 2014
Modifié par rutabagans le 27/08/2014 à 11:21
Modifié par rutabagans le 27/08/2014 à 11:21
il s'agit de changer le format de la colonne. je ne suis pas sur de ce que j'ai écrit pour faire le changer (avec des recherche sur les différent site qui en parle) et si c'est bon , rien ne se produit.
For i = 4 To nb_lignes_nom
Cells(i, 4) = Format ("dd.mm.yy")
Cells(i, 5).FormulaLocal = "=MOIS.DECALER(" & CDate(Cells(i, 4).Value) & ";" & UserForm2.TextBox2.Value & ")"
Next
For i = 4 To nb_lignes_nom
Cells(i, 4) = Format ("dd.mm.yy")
Cells(i, 5).FormulaLocal = "=MOIS.DECALER(" & CDate(Cells(i, 4).Value) & ";" & UserForm2.TextBox2.Value & ")"
Next
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 11:47
27 août 2014 à 11:47
pour le format essaye cells(i,4).NumberFormat = "dd/mm/yyyy"
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 11:41
27 août 2014 à 11:41
sans le Cdate ça faisait quoi ?
rutabagans
Messages postés
15
Date d'inscription
mardi 26 août 2014
Statut
Membre
Dernière intervention
27 août 2014
27 août 2014 à 11:44
27 août 2014 à 11:44
la même chose --' et il ne met au format date que la premier date ... je ne comprend rien...
rutabagans
Messages postés
15
Date d'inscription
mardi 26 août 2014
Statut
Membre
Dernière intervention
27 août 2014
27 août 2014 à 11:55
27 août 2014 à 11:55
avec les espion cette fois-ci , la valeur de : " Cells(i, 4).Value" est vide , c'est peut être ça qui bloque le processus ?
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 13:59
27 août 2014 à 13:59
Ce serait possible que tu mette ton ficher dans un Cijoint pour que je puisse regarder directement ou c'est confidentiel ?
rutabagans
Messages postés
15
Date d'inscription
mardi 26 août 2014
Statut
Membre
Dernière intervention
27 août 2014
Modifié par rutabagans le 27/08/2014 à 14:16
Modifié par rutabagans le 27/08/2014 à 14:16
ce n'est pas "confidentielle" mais trop sécuriser du coup , je ne peut rien faire passer par internet ... je peut parcontre mettre tout le code et l'userform.


Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub ok_Click()
Dim nb_lignes_nom As Integer
Range("D1").Select
Selection.EntireColumn.Insert
Range("D1").Value = UserForm2.TextBox1.Value
Selection.VerticalAlignment = xlBottom
Selection.HorizontalAlignment = xlCenter
Range("D3").Value = "obtention"
Selection.EntireColumn.AutoFit
If CheckBox1.Value = True Then
Range("E1").Select
Selection.EntireColumn.Insert
Range("E3").Value = "programmée"
Selection.EntireColumn.AutoFit
Selection.EntireColumn.Insert
Range("E3").Value = "fin de validité"
Selection.EntireColumn.AutoFit
nb_lignes_nb_lignes_nom = Cells(2, 1).End(xlDown).Row
For i = 4 To nb_lignes_nom
Cells(i, 4).NumberFormat = "dd/mm/yyyy"
Cells(i, 5).NumberFormat = "m/d/yyyy"
Cells(i, 5).FormulaLocal = "=MOIS.DECALER((" & CDate(Cells(i, 4).Value) & ",4);" & UserForm2.TextBox2.Value & ")"
Next
Range("D1:F1").Merge
Selection.VerticalAlignment = xlBottom
Selection.HorizontalAlignment = xlCenter
Else
End If
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 14:42
27 août 2014 à 14:42
c'est normal le :
ta variable nb_ligne_nom doit pas avoir de valeur et reste à 0 du coup il ne sais pas jusqu'ou compter et il sort tout de suite je pense
à toute fin utile : quand tu mets du code sur CCM utilise le petit bouton au dessus de la zone de texte et précsise que c'est du basic c'est plus facil à lire et ça met un peu de couleur dans ce monde de brut :-)
nb_lignes_nb_lignes_nom = Cells(2, 1).End(xlDown).Row?
ta variable nb_ligne_nom doit pas avoir de valeur et reste à 0 du coup il ne sais pas jusqu'ou compter et il sort tout de suite je pense
à toute fin utile : quand tu mets du code sur CCM utilise le petit bouton au dessus de la zone de texte et précsise que c'est du basic c'est plus facil à lire et ça met un peu de couleur dans ce monde de brut :-)
rutabagans
Messages postés
15
Date d'inscription
mardi 26 août 2014
Statut
Membre
Dernière intervention
27 août 2014
27 août 2014 à 14:57
27 août 2014 à 14:57
ah... ça explique pas mal de problème ... merci ^^ . je le saurais pour la prochaine fois comme ça . ça semble mieux fonctionner par la même occasion ... mais maintenant il m'affiche #N/A sur chaqu'une des lignes ou il ne "trouve" ou ne lis pas la case avec la "donner source "
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 15:18
27 août 2014 à 15:18
normalement tu a un petit bouton 'Attention' qui te décris ce qui ne va pas dans ta formule non ?
1/C'est des cas isolés celles qui ne marchent pas ou c'est toutes les lignes ?
2/ pourquoi tu mets pas cells (i,5) et cells(i,4) au même format ? (simple curiosité ça n'a aucune incidence sur le code)
1/C'est des cas isolés celles qui ne marchent pas ou c'est toutes les lignes ?
2/ pourquoi tu mets pas cells (i,5) et cells(i,4) au même format ? (simple curiosité ça n'a aucune incidence sur le code)
rutabagans
Messages postés
15
Date d'inscription
mardi 26 août 2014
Statut
Membre
Dernière intervention
27 août 2014
27 août 2014 à 15:26
27 août 2014 à 15:26
c'est sur tout les lignes, oui il me dit que la "case départ" est vide alors qu'il y a toujours le bout de code dans VBA . pour les Dates , je faisais des test rien de mieux pour apprendre et voir les différence ^^ .
jai placer un espion sur i , il varie bien a chaque passage , du code étape par étape , il ne reste donc que la notation qui n'as pas changer depuis le début . (si j'ai enlever le CDate (qui m'indiquer une erreur 1004) et comme je n'est pas "compris" son sens (et que j'aimerai ètre capable d'expliquer ce que je fais) surtout que l'on demande de "changer la valeur de la ligne au format date mais maintenant qu'il y est de base ...
jai placer un espion sur i , il varie bien a chaque passage , du code étape par étape , il ne reste donc que la notation qui n'as pas changer depuis le début . (si j'ai enlever le CDate (qui m'indiquer une erreur 1004) et comme je n'est pas "compris" son sens (et que j'aimerai ètre capable d'expliquer ce que je fais) surtout que l'on demande de "changer la valeur de la ligne au format date mais maintenant qu'il y est de base ...
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
Modifié par borntobealive le 27/08/2014 à 15:46
Modifié par borntobealive le 27/08/2014 à 15:46
essaye en enlevant le cdate et le .value et en mettant .address à la place
rutabagans
Messages postés
15
Date d'inscription
mardi 26 août 2014
Statut
Membre
Dernière intervention
27 août 2014
27 août 2014 à 15:46
27 août 2014 à 15:46
c'est fait , ça donne le même résultat --'
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 15:52
27 août 2014 à 15:52
Rhhhhhoooooo.....
quand tu va dans la case avec le #N/A et que tu cliques dans la barre des fx il te met bien la cellule d'avant en encadré bleu (ou mauve ou n'importe quel autre couleur) ?
quand tu va dans la case avec le #N/A et que tu cliques dans la barre des fx il te met bien la cellule d'avant en encadré bleu (ou mauve ou n'importe quel autre couleur) ?
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 15:53
27 août 2014 à 15:53
Cells(i, 5).FormulaLocal = "=MOIS.DECALER((" & CDate(Cells(i, 4).Value) & ",4);" & UserForm2.TextBox2.Value & ")"
une parenthese en trop après le DECALER non ?
rutabagans
Messages postés
15
Date d'inscription
mardi 26 août 2014
Statut
Membre
Dernière intervention
27 août 2014
Modifié par rutabagans le 27/08/2014 à 16:14
Modifié par rutabagans le 27/08/2014 à 16:14

j'ai ça avec ce code (je n'arrive pas a indiqué que c'est du basic... ou alors je sais pas ou ...) :
nb_lignes_nom = Cells(2, 1).End(xlDown).Row
For i = 4 To nb_lignes_nom
Cells(i, 4).NumberFormat = "dd/mm/yyyy"
Cells(i, 5).NumberFormat = "dd/mm/yyyy"
Cells(i, 5).FormulaLocal = "=MOIS.DECALER(" & Cells(i, 4) & "; " & UserForm2.TextBox2.Value & ")"
Next
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 16:14
27 août 2014 à 16:14
c'est normal qu'il te mette #N/A vu qu'il n'y a pas tous les arguments
essaye :
pour faire du code tu surligne ton code tu vas sur l'icone à côté de S et tu clique sur 'Basic'
essaye :
nb_lignes_nom = Cells(2, 1).End(xlDown).Row For i = 4 To nb_lignes_nom Cells(i, 4).NumberFormat = "dd/mm/yyyy" Cells(i, 5).NumberFormat = "dd/mm/yyyy" Cells(i, 5).FormulaLocal = "=MOIS.DECALER(" & Cells(i, 4).address(false,false, xlA1, false,false) & "; " & UserForm2.TextBox2.Value & ")" Next
pour faire du code tu surligne ton code tu vas sur l'icone à côté de S et tu clique sur 'Basic'
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 16:16
27 août 2014 à 16:16
et là normalement il va te dire que la case d'avant est vide donc valeur = 0 (donc en date : 1/1/1900 et décaler en fonction)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
27 août 2014 à 16:19
27 août 2014 à 16:19
Salut,
Je ne fais que passer...
Le mode d'emploi pour les balises <code> (au cas ou) est ICI.
Cordialement,
Pijaku
Je ne fais que passer...
Le mode d'emploi pour les balises <code> (au cas ou) est ICI.
Cordialement,
Pijaku
rutabagans
Messages postés
15
Date d'inscription
mardi 26 août 2014
Statut
Membre
Dernière intervention
27 août 2014
27 août 2014 à 16:20
27 août 2014 à 16:20
Merci beaucoup d'avoir pris le temps de répondre ^^ , euh question subsidiaire, qu'est ce que tu a rajouter à la fin ? ces "false" et cette "xlA1" a quoi servent-ils et pourquoi ne pas les avoir utiliser avant ?
borntobealive
Messages postés
138
Date d'inscription
jeudi 17 juillet 2014
Statut
Membre
Dernière intervention
25 février 2019
7
27 août 2014 à 16:26
27 août 2014 à 16:26
https://docs.microsoft.com/fr-fr/office/vba/api/excel.range.address?redirectedfrom=MSDN
ravi d'avoir pu t'aider (entre stagiaire faut se serrer les coudes)
ravi d'avoir pu t'aider (entre stagiaire faut se serrer les coudes)
Modifié par rutabagans le 26/08/2014 à 16:45
je ne comprend pas comment fonctionnent les "&" , a quoi il serve ça fait plusieurs fois que j'en voit dans les codes ?
26 août 2014 à 16:54
tu avais oublier Cells et essaye de t'affranchir du select qui ralentit ton code :
26 août 2014 à 16:56
26 août 2014 à 16:57
et attention il subsiste un bug que je ne sait pas résoudre avec les date dont le jour est inferieur à 12 mais si t'as pas de soucis t'embête pas avec ça
26 août 2014 à 17:06