• Initiateur de la discussion Initiateur de la discussion Sim64
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Sim64

Guest
Bonjour,

Je requiers de nouveau votre aide pour mon projet. J'ai un problème qui se pose.

Tout d'abord, sur le fichier "projet excel 07-02-12 V1" je n'arrive pas à faire en sorte que la valeur rentrer dans la zone de texte aille dans la première cellule vide d'une ligne déterminée par la formule. Je m'explique.
Par exemple, ouvrir l'userform C_préparation. Vous pouvez voir les types de contrats (CDD, CDI...). Ce qui me bloque c'est que je n'arrive pas à ranger les valeurs dans la première cellule vide. En plus, les lignes sont différentes sur excel. Pour le CDI c'est 5 et le CDD 11. Après, je pense que le numéro de ligne est inclus dans la formule. Attention, chaque textbox a un nom et possède des contrôle que vous pourrez voir si vous double cliquez.

C'est donc en VBA et dans l'userform C_préparation et D-expédition. Cependant, il me suffit pour une seule case et c'est bon, pas besoin de tout faire non plus.

Je ne sais pas si je suis très clair, c'est assez complexe à expliquer en fait et je ne maitrise pas excel à fond. Je vous remercie d'avance pour votre,

Cordialement, Simon
 

Pièces jointes

Re : Ranger des celulles

Bonjour Simon, bonjour le forum,

Je vois que tu fais des effort...
Tu n'étais pas loin du tout de la solution ! Une simple virgule à la place d'un point :
Sheets ("Préparation"), Cells(21, Application.Columns.Count).End(xlToLeft).Offset(0, 1).Value = Me.CP_CS
le code juste :
Code:
Sheets("Préparation").Cells(21, Application.Columns.Count).End(xlToLeft).Offset(0, 1).Value = Me.CP_CS

Autre chose, tu as une référence circulaire avec la formule =SI(ESTVIDE(B2);"";SOMME(Colis_non_prep)) en B64 de l'onglet Préparation. À vérifier...
 
Dernière édition:
Re : Ranger des celulles

Merci beaucoup, j'essaye de simplifier pour vous.

Je viens de tester et ça marche. Oui, je sais pour le référence circulaire et le problème est résolu!! merci bien!!

A bientôt, (surement dans l'après midi car je rencontre quelques problèmes ^^)

Bonne après midi
 
Re : Ranger des celulles

En fait, avec ma partenaire, nous avons remarquer un petit problème au niveau de la formule. C'est vrai qu'elle retransmet la valeur dans les celulles mais elle bug. Je m'explique. Par exemple, pour les CDI en préparation, j'ai taper dans le userform 199. Dans la première cellule vide il me met 1, celle qui suit 19, puis sur la troisième 199. Hors, il me faudrait 199 sur la première directement.

Merci d'avance. Je te joins le fichier avec l'exemple
 

Pièces jointes

Re : Ranger des celulles

Bonjour Simon, bonjour le forum,

Oui c'est normal car tu utilises la procédure Change de la TextBox. Donc dès que tu édites une valeur numérique elle agit ! Quand tu tapes 1 elle se déclenche, recherche la première cellule vide et y inscrit la valeur entière 1. Tu tapes ensuite 9. Donc nouveau changement, elle se déclenche, recherche la première cellule vide et y inscrit la valeur entière 19. etc.
J'avoue que je prèfère passer par un bouton (CommandButton) Ok qui, à la fin des renseignements, va placer les données des différentes textboxes dans les tableaux...
Sinon, tu peux remplacer la procédure Change par AfterUpdate ou Exit...
 
Re : Ranger des celulles

Merci, cela fonctionne maintenant. Merci aussi pour cette très bonn explication, je comprends maintenant à quoi sert exactement Change.
Dis moi, j'ai un autre soucis sur une boucle Do loop que je ne comprends pas. J'ai effectué tous les tests possibles et ça ne marche pas. Surement je dois être bloqué sur quelque chose et j'ai besoin d'un regard neuf.

Sur le userform D_datepériode, je souhaite que l'utilisateur marque 2 dates, date début et date fin. Cependant, mes deux boucles sont infinis parce que je n'arrive pas à remettre les 2 textbox vides pour reprendre la saisie. J'ia esayé de mettre le range("datedebut")="" partout mais cela ne fonctionne pas.
 

Pièces jointes

Re : Ranger des celulles

Bonjour Simon, bonjour le forum,

Encore une fois je n'aime pas quand ce n'est pas le CommandButton qui valide les données. Je n'ai pas pris le temps de comprendre ton code mais voici ce que je te propose :
• tu supprimes les procédures sur les deux textboxes,
• tu ne gardes que le code ci-dessous appliqué au CommandButton :
Code:
Private Sub CommandButton1_Click() 'bouton "Ok"
Dim ctr As Control 'déclare la variable ctr (ConTRole)

For Each ctr In Me.Controls 'boucle sur tous les contrôles de l'UserForm
    If TypeOf ctr Is MSForms.TextBox Then 'condition 1 : si le contrôle est une TextBox
        If ctr.Value = "" Then 'condition 2 : si la Textbox est vide
            Message = MsgBox("la saisie est obligatoire !") 'message
            ctr.SetFocus 'place le curseur dans la TextBox
            Exit Sub 'sort de la procédure
        ElseIf Not IsDate(ctr.Value) Then 'condition 3 : si le texte renseigné ne correspond pas a une date
            Message = MsgBox(ctr.Value & " nest pas une date !") 'message
            ctr.SetFocus 'place le curseur dans la TextBox
            'sélection du texte
            ctr.SelStart = 0 'début de la sélection
            ctr.SelLength = Len(ctr.Value) 'longueur de la sélection
            Exit Sub 'sort de la procédure
        End If 'fin des conditions 2 et 3
    End If 'fin de la condition1
Next ctr 'prochain contrôle de la boucle

Sheets("entrepôt").Range("B13") = Datedebut.Text 'place la date de début
Sheets("entrepôt").Range("B14") = datefin.Text 'place la date de fin
Unload Me 'vide et ferme l'UserForm
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
12
Affichages
408
Retour