Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème de retranscription de formule excel* ( *Dans celllules )en VBA pour useform.

mistercoke

XLDnaute Junior
Bonjour les xldiens,

Cela fait un moment que je bute sur le sujet, c'est pourquoi je viens solliciter votre aide. J'ai réussi a obtenir ce que je voulais à l'aide de formule classic dans les cellules et j'aimerais retranscrire ces fonctions sous vba d'après un lancement d'un useform. J'ai volontairement mis dans VB les formules brutes de "pomme" ( Couleur Verte ) car toutes mes modifs perso m'amènent des erreurs de syntaxe ou bien #VALUE.
Si vous avez des idées. N'hésitez pas à mettre des commentaires sous VB c'est ainsi que j'ai réussi a apprendre avec votre aide ce langage.

D'avance un gros merci, je vais voir sur le net si je trouve quelque chose.

Voici un bout du code dans le paramètrage de "Valider"
With ws
dl = .Range("B65000").End(xlUp).Row + 1
.Cells(dl, 2) = sEquipe
.Cells(dl, 3) = sCycle
.Cells(dl, 4) = TextBox1
If TextBox4 <> "" Then .Cells(dl, 5) = CDbl(TextBox4)
If TextBox5 <> "" Then .Cells(dl, 6) = CDbl(TextBox5)
If TextBox8 <> "" Then .Cells(dl, 7) = CDbl(TextBox8)
If TextBox9 <> "" Then .Cells(dl, 8) = CDbl(TextBox9)
.Cells(dl, 9) = TextBox10
.Cells(dl, 10) = (CDbl(TextBox5) * 100) / (CDbl(TextBox4) * 24)
.Cells(dl, 11) = (CDbl(TextBox9) * 100) / (CDbl(TextBox8) * 24)
.Cells(dl, 1) = Date
'.Cells(dl, 12) = INT(Mod(INT((Date-1)/7)+3/5;52+5/28))+1)
'.Cells(dl,13)=LOOKUP(Date;Bibliothèque!$N$6:$BN$6;Bibliothèque!$N$7:$BN$7))
'.Cells(dl,14)=LOOKUP(Date;Bibliothèque!$N$6:$BN$6;Bibliothèque!$N$8:$BN$8))
'.Cells(dl,15)=CONCATENATE((cells(dl,13);M12;((Cells(dl,14);N12)
End With


@+les pros
 

Pièces jointes

  • Useform_Downloadv1datesemaine.zip
    46.4 KB · Affichages: 17

Hippolite

XLDnaute Accro
Re : Problème de retranscription de formule excel* ( *Dans celllules )en VBA pour use

Bonjour,

Mod : touche F1 pour voir la syntaxe
LOOKUP : connais pas (Xl 2000 probablement)
CONCATENATE : remplacer par des & entre les éléments

Sinon en dépannage, tu peux appeler les fonctions de la feuille avec WorksheetFunction.NomDeLaFonction

A+
 

mistercoke

XLDnaute Junior
Re : Problème de retranscription de formule excel* ( *Dans celllules )en VBA pour use

Bonjour Hippolite,

Merci d'avoir pris la peine de te pencher sur mon problème, mais malgrés les aides excel je n'y arrive pas. Je vais continuer a chercher sur d'autre forum également mais pour l'instant c'est infructueux. Au pire je laisserai les formules dans les cellules mais je souhaitais que ca prenne moins de place. Nous n'avons pas acess ( Au boulot ) et ce fichier me sert de base de donné. 65000 lignes avec ces formules prennent de la place. J'ai déjà réduit considérablement la taille en mettant les formules dans VBA mais mon fichier final fait encore 19Meg sans données.

Merci quand même. Mais je vais voir en appelant les fonctions de la feuille si je trouve rien.

Ciao Ciao et @+
 

Hippolite

XLDnaute Accro
Re : Problème de retranscription de formule excel* ( *Dans celllules )en VBA pour use

Re,
Code:
CONCATENATE((cells(dl,13);M12;((Cel ls(dl,14);N12)
- il y a des parenthèses en trop
- Quand on bascule de la feuille vers VBA, remplacer les ";" par des ","

Ce qui devrait donner
Code:
CONCATENATE(Cells(dl, 13), M12, Cells(dl, 14), N12)
 ou bien
Cells(dl, 13) & M12 & Cells(dl, 14) & N12
A+
 

Hippolite

XLDnaute Accro
Re : Problème de retranscription de formule excel* ( *Dans celllules )en VBA pour use

Re,
Pour les deuxième et troisième formules, je pense que ça devrait donner quelque chose comme :
Code:
HLookup(Date, Sheets("Bibliothèque").Range("$N$6:$BN$7"), 2)
HLookup(Date, Sheets("Bibliothèque").Range("$N$6:$BN$8"), 3)

A+
 
Dernière édition:

mistercoke

XLDnaute Junior
Re : Problème de retranscription de formule excel* ( *Dans celllules )en VBA pour use

Super Hippolite,

Bon g testé la formule avec mod et int mais cela me revoi une valeur de 31 en date du10/03/2011. Je suis donc passé par cette formule : Cells(dl, 12) = Format(Date, "ww", vbMonday, vbFirstFourDays) du post suivant :https://www.excel-downloads.com/threads/calcul-semaine-vba.153077/. Même si cela génère des erreurs en 2019 -2031 et autre. Je m'en contenterais.

Je vais voir pour le reste et je te tiens au courrant.

Merci encore pour ta participation, avec les infos a droite a gauche j'arrive a avancer.
 

Hippolite

XLDnaute Accro
Re : Problème de retranscription de formule excel* ( *Dans celllules )en VBA pour use

Re,

Avec un besoin bien exprimé, la réponse sera mieux ciblée.
Je m'étais contenté de retranscrire la formule en l'état.

Post#7 : si c'est le numéro de semaine que tu recherches, j'avais fait une compilation de ce que j'avais trouvé sur les forums (formules et VBA).
Ce qui est en vert fonctionne correctement.

A+
 

Pièces jointes

  • N° Semaine.xls
    37 KB · Affichages: 141
  • N° Semaine.xls
    37 KB · Affichages: 141
  • N° Semaine.xls
    37 KB · Affichages: 140

mistercoke

XLDnaute Junior
Re : Problème de retranscription de formule excel* ( *Dans celllules )en VBA pour use

hi Hippolite,

Pour la définition de la semaine calendaire j'ai utilisé la formule suivante. ( Malgrés les erreurs possible en 2019 et autres )
.Cells(dl, 12) = Format(Date, "ww", vbMonday, vbFirstFourDays)

Pour le Vlookup sous VBA, la syntaxe diffère sous VBA. ( La valeur recherché se trouve a la fin et non au début lorsque c'est saisie dans une cellule.Ce qui donne :
.Cells(dl, 13) = Application.WorksheetFunction.VLookup(Sheets("Bibliothèque").Range("$N$6:$BN$6"), Sheets("Bibliothèque").Range("$N$7:$BN$7"), Format(Date, "ww", vbMonday, vbFirstFourDays), False)

.Cells(dl, 14) = Application.WorksheetFunction.VLookup(Sheets("Bibliothèque").Range("$N$6:$BN$6"), Sheets("Bibliothèque").Range("$N$8:$BN$8"), Format(Date, "ww", vbMonday, vbFirstFourDays), False)


Pour le concatener tu avais tout bon cela se traduit par :
.Cells(dl, 15) = "P" & Cells(dl, 13) & "S" & Cells(dl, 14)

Et tout ca, ca marche. Un gros merci mon grand je peux désormais passer a la suite. Plus d'une journée de recherche pour gagner de la place. Avant :23 939KB ( 65 000 lignes traitées ) après avoir tout mis en VBA 3 303KB.

Moralité c'est de la balle, yahoouuuu Merci Hipollite et bien le bonjjour aux xldiens.

Ciaociao
 

Discussions similaires

Réponses
2
Affichages
664
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…