Excel Downloads
Forum

Précédent   Excel Downloads Forums > Archives > Forum Excel Downloads - Archives > Conflit entre "Formules" et saisies dans "Userform".
Vous inscrire
S'inscrire FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus


 
 
LinkBack Outils de la discussion
Vieux 13/01/2003, 23h54   #1 (permalink)
Quaisako
 
Messages: n/a
Par défaut Conflit entre "Formules" et saisies dans "Userform".

Bonsoir à toutes et à tous,

J'ai un souci entre une saisie faite à partir d'une userform, et, la copie des valeurs dans des cellules contenant des formules.

Je me doutais que ça ne le ferait pas.

Tout est dit dans le Zip. Je me voyais mal m'expliquer autrement.

Merci d'avance à tous ceux qui voudront bien se pencher sur mon cas.

Quaisako
Fichiers attachés
Type de fichier : zip UserformQuai2.zip (24,5 Ko, 9 affichages)
 
ANNONCES
Vieux 14/01/2003, 14h14   #2 (permalink)
@+Thierry
 
Messages: n/a
Par défaut Re: Conflit entre "Formules" et saisies dans "Userform".

Bonjour Quaisako

Par mail suite à ta demande je t'avais fait parvenir une béta version de ce UserForm de Saisie, mais en voyant ce que tu as dans le zip... Tu ne t'en es pas beaucoup inspiré...

Il n'y a pas de "Conflit" il y a erreur de conception dans ce que tu veux faire.

Soit TOUT se fait par le UserForm donc en VBA, soit TOUT se fait par Formule...
Là tu essaies de faire un truc hybride... Je ne dis pas que çà ne va pas marcher, mais il faut être hyperlogique dans ce cas...

Dans ce code :
Private Sub Cmd_Valider_Click()
Dim Ligne As Integer
Ligne = Sheets("Facture").Range("D25").End(xlUp).Row + 1
With Sheets("Facture")
.Range("B" & Ligne).Value = Txt_Unité_Fac.Value
.Range("C" & Ligne).Value = Txt_Kilo_Fac.Value
.Range("D" & Ligne).Value = Cbx_Désignation_Fac.Value
.Range("F" & Ligne).Value = Txt_PNU_Fac.Value
End With
End Sub

Tu dis bien à VBA va écrire dans la cellule dans la dernière cellule vide de "F" donc il ne faut pas t'étonner que les formules qui s'y trouve soient écrasées à chaque fois que tu valides...

Ensuite quand tu écris :
"Si l'un d'entre-vous préfère mettre ces formules en VBA. Pas de problème. Par contre, je veux bien quelques explications.", ce serait un peu faire tout à l'envers de faire écrire par VBA des formules pour retrouver la valeur d'un truc par rechercheV dans la feuille alors que le UserForm y avait déjà accès "en live" avant d'activer le bouton "Cmd_Valider"...

Regardes à nouveau cette version Beta de UserFormSaisie-Demo et si tu analyses bien ce que j'ai fait, tu verras que dans l'initialisation du UserForm il y a plein de codes... et dans ton fichier l'initialisation se résume à çà :
Private Sub UserForm_Initialize()
End Sub

Maintenant si tu veux à tout prix faire écrire des formules par VBA je te conseille de regarder cette démo USFControleFormules.zip (40Ko) tu as de quoi faire !!

Bon après midi
@+Thierry

PS pour ce fil oui !! lol données validation !!! lol j'ai cherché dans VBA !! comme d'hab et je me demandais... lol grosse fatigue !!
 
Vieux 17/01/2003, 11h40   #3 (permalink)
Quaisako
 
Messages: n/a
Par défaut Re: Conflit entre "Formules" et saisies dans "Userform".

Bonjour Thierry,

Je ne t'ai pas oublié Thierry. Côté inspiration, je m'inspire...je m'inspire. Mais j'ai du mal à trouver le bon raisonnement. Il y a un sacré bord.. dans ma tête.

Bonjour le Forum

Pour ce qui suit, j'ai mis à la fin du code, la partie "Else", pour qu'après l'ajout d'une nouvelle catégorie dans la liste ("Liste_Catégories"), s'enchaîne le tri automatique de la liste.

Hors après validation suite à une nouvelle entrée, j'ai bien le nouveau nom dans la liste, mais pas de tri.

Aucun message d'erreur.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewEntry As String
If Target.Cells.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub

If Not Intersect(Target, Range("C6:C3000")) Is Nothing Then
NewEntry = ""
NewEntry = Target
If WorksheetFunction.CountIf(Feuil12.Range("Liste_Cat égories"), NewEntry) = 0 Then
Feuil12.Range("Liste_Catégories").End(xlDown).Offs et(1, 0) = NewEntry
Feuil12.Range("Liste_Catégories").Resize(Feuil12.R ange("Liste_Catégories").Rows.Count + 1, 1).Name = "Liste_Catégories"

Else
Feuil12.Range("Liste_Catégories").Select
Selection.Sort Key1:=Range("A8"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom


End If
End If
End Sub

Merci d'avance pour le dépannage.

Quaisako
 
ANNONCES
 



Outils de la discussion

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui



Fuseau horaire GMT +2. Il est actuellement 06h36.


(C) 2006 Excel Downloads