Conflit entre "Formules" et saisies dans "Userform".

Q

Quaisako

Guest
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
 

Pièces jointes

  • UserformQuai2.zip
    24.5 KB · Affichages: 87
@

@+Thierry

Guest
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
 
Dernière modification par un modérateur:
Q

Quaisako

Guest
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).Offset(1, 0) = NewEntry
Feuil12.Range("Liste_Catégories").Resize(Feuil12.Range("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
 

Discussions similaires

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22