![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Messages: n/a
|
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 |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Messages: n/a
|
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 !! |
|
|
#3 (permalink) |
|
Messages: n/a
|
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 | |
|
|