[VBA]Besoin d'aide pour integrer des formules excel (correction)

G@mbit

XLDnaute Nouveau
Salut à tous!

alors voilà, je dois faire un petit fichier qui sera remplis tel une base de donnée.
Afin d'avoir quelque chose de fluide, je veux passer par une interface VBA.
Pour cela, j'ai fait un programme, mais ne parvient pas à le finaliser.

J'entend par là qu'il reste certains bugs.
Le programme, le voici:

Sub a()
'affichage de la date
Dim aujourdhui As Date
Dim xxx As Variant
Dim jour As Variant
Dim semaine As Variant
Dim mois As Variant
Dim an As Variant
Dim gl As Variant


'--------------------
'date


xxx = InputBox("Entrer la date du jour (au format jj/mm/aaa):") 'saisie de la date
Range("A10") = aujourdhui
jour = DatePart("d", xxx)
mois = DatePart("m", xxx)
an = DatePart("yyyy", xxx)
'MsgBox ("jour" & jour)
Range("a1") = jour
'MsgBox ("mois" & mois)
Range("c1") = mois
'MsgBox ("an" & an)
Range("d1") = an
'Range("e1") = xxx

'---------------------

'enregistrement nom GL

gl = InputBox("Entrez le nom du GL:") 'saisie du nom du GL
'MsgBox (gl)
Range("f1") = gl 'affiche le nom
Range("g1") = "=VLookUp(Gl;source!$A$2:$D$15;tournée)" 'recherche dans le doc source la tournée du GL
Range("h1") = "=VLookUp(Gl;source!$A$2:$D$15;ligne)" 'recherche dans le doc source la ligne du GL
Range("i1") = "=VLookUp(Gl;source!$A$2:$D$15;gap)" 'recherche dans le doc source le gap du GL

'temps en poste

Dim temps As Variant

temps = InputBox("indiquer le temps passé en poste:") 'saisie du temps passé en poste
Range("j1") = temps 'affichage du temps
Range("k1") = "=(1-(j1/source!$F$17))*100" 'affichage du % de temps passé HORS poste
Range("l1") = "=SOMMEPROD(($c$1:$c$65536=mois)*($F$1:$F$65536=gl)*($K$1:$K$65536))/20" 'affichage du % de temps passé HORS poste dans le mois

End Sub

J'ai cependant, 4 problemes:
Mes 3 Vlookup ne fonctionnent pas (erreur 1004) pour une raison que j'ignore... si j'enleve le "=" en début de formule, je n'ai plus l'erreur mais il me copie du texte et non pas une formule.
Enfin, le SOMMEPROD m'indique une erreur que je ne comprend pas non plus.

Ainsi, je me retourne vers vous pour avoir un regard extérieur :)

Merci!
 

G@mbit

XLDnaute Nouveau
Re : [VBA]Besoin d'aide pour integrer des formules excel (correction)

en faite, si je mets ça:
Range("i1").Formula = "=VLookUp(Gl;source!$A$2:$D$15;gap)"
ou
Range("i1")= "=VLookUp(Gl;source!$A$2:$D$15;gap)"
ça ne marche pas

mais si je mets ça:
Range("i1").Formula = "VLookUp(Gl;source!$A$2:$D$15;gap)"
Range("i1")= "VLookUp(Gl;source!$A$2:$D$15;gap)"
alors il ne me met plus d'erreur mais la formule est bien entendu copiée telle qu'elle dans ma cellule.... :/
 

Pierrot93

XLDnaute Barbatruc
Re : [VBA]Besoin d'aide pour integrer des formules excel (correction)

Bonjour,

sans un petit fichier exemple pour tester, difficile de t'aider... essaye peut être avec l'enregistreur de macro, te donnera un code brut de brut... de plus perso, pas trop formuliste....

bonne journée
@+
 

tototiti2008

XLDnaute Barbatruc
Re : [VBA]Besoin d'aide pour integrer des formules excel (correction)

Bonjour G@mbit, Bonjour Pierrot :),

Met Formula et remplace tes ";" par des ","

genre

Code:
Range("i1").Formula = "=VLookUp(Gl,source!$A$2:$D$15,gap)"

Mais la question de Pierrot sur "gap" reste d'actualité
 

tototiti2008

XLDnaute Barbatruc
Re : [VBA]Besoin d'aide pour integrer des formules excel (correction)

Re,

bah la formule attends un numéro de colonne, non ....

s'il était besoin, je confirme ;)
Si gap est une plage de cellules, peu de chances que ça renvoie le résultat attendu
mais bon, cette partie c'est la création de la formule et comme on ne connait pas les données...
 

G@mbit

XLDnaute Nouveau
Re : [VBA]Besoin d'aide pour integrer des formules excel (correction)

hello!

alors voilà, j'ai refait quelques modifications.
Maintenant tout fonctionne. Voilà ce que j'ai désormais:
Sub a()
'affichage de la date
Dim aujourdhui As Date
Dim xxx As Variant
Dim jour As Variant
Dim semaine As Variant
Dim mois As Variant
Dim an As Variant
Dim gl As Variant


'--------------------
'date


xxx = InputBox("Entrer la date du jour (au format jj/mm/aaa):") 'saisie de la date
Range("A10") = aujourdhui
jour = DatePart("d", xxx)
mois = DatePart("m", xxx)
an = DatePart("yyyy", xxx)
'MsgBox ("jour" & jour)
Range("a1") = jour
'MsgBox ("mois" & mois)
Range("c1") = mois
'MsgBox ("an" & an)
Range("d1") = an
'Range("e1") = xxx

'---------------------
'enregistrement nom GL

gl = InputBox("Entrez le nom du GL:") 'saisie du nom du GL
'MsgBox (gl)
Range("f1") = gl 'affiche le nom
Range("g1") = "=VLookUp(feuil1!$F$1,source!$A$2:$D$15,2)" 'recherche dans le doc source la tournée du GL
Range("h1") = "=VLookUp(feuil1!$F$1,source!$A$2:$D$15,3)" 'recherche dans le doc source la ligne du GL
Range("i1") = "=VLookUp(feuil1!$F$1,source!$A$2:$D$15,4)" 'recherche dans le doc source le gap du GL

'temps en poste

Dim temps As Variant

temps = InputBox("indiquer le temps passé en poste:") 'saisie du temps passé en poste
Range("j1") = temps 'affichage du temps
Range("k1") = "=(1-(j1/source!$F$17))*100" 'affichage du % de temps passé HORS poste
Range("l1") = "=SOMMEPROD(($C$1:$C$65535=$B$6)*($F$1:$F$65535=F1)*($K$1:$K$65535))/20" 'affichage du % de temps passé HORS poste dans le mois

End Sub

question:
Au début je demande à l'utilisateur de saisir le nom du GL, dans le but de faire une recherche apres. Hors si l'utilisateur n'orthographie pas correctement le nom, ça ne fonctionnera pas.
De ce fait, j'aimerais imposer un menu déroulant où l'utilisateur viendrai selectionner un nom. Je ne veux pas qu'il ai la possibilité de le rentrer lui meme.
Est-ce possible?
Si oui, comment? :)

Merci d'avance ;)
 

tototiti2008

XLDnaute Barbatruc
Re : [VBA]Besoin d'aide pour integrer des formules excel (correction)

Bonjour G@mbit,

Il n'y a pas de listes déroulantes dans les InputBox, il faut que tu crées un userform avec un contrôle Combobox (liste déroulante) ou que tu envisages une liste déroulante dans la feuille de calcul
 

Discussions similaires

Réponses
5
Affichages
167