Création d'une formule de la saisie des données via Userform

Bonsoir à tous ;

je crée une formule de la saisi des données via Userform, voici le fichier ; mais le problème que je suis trouvé, le nombre des couche géologique ne peut pas dépasser le nombre 9.
merci

14la-geologie.xlsm (21.80 Ko)

Bonjour,

Merci de relire la charte ici https://forum.excel-pratique.com/excel/a-lire-avant-de-poster-charte-du-forum-et-informations-utiles... et notamment ces quelques lignes

Ne postez pas la même question sur un autre forum pour éviter de faire perdre bêtement du temps aux membres sur un problème qui peut être déjà résolu sur l'autre forum. L'inverse est également valable, si vous avez déjà posé votre question sur un autre forum, ne créez pas un doublon sur ce forum (à moins d'avoir clôturé le sujet sur l'autre forum).

Vous fonctionnez comment avec l'userform ?
C'est vous qui entrez le nombre de couche dans la textbox 8 ?

Cordialement

Edit : une idée en changeant le code ci-dessous

Private Sub TextBox8_Change()
If TextBox8 <> "" And TextBox8 > 9 Then MsgBox "le nombre de couche maximum est de 9": Exit Sub
Range("i7") = TextBox8
End Sub

Sinon, quelques remarques :
1. vous avez mis une couleur de fond blanche sur votre feuille. A éviter si possible de faire autrement....Les couleurs de remplissage, cela alourdit les fichiers
Faites ceci :
- Sélectionnez toutes les cellules
- cliquez sur l'icone "couleur de remplissage" et cochez la case "sans remplissage"
- Ensuite allez dans le menu "Affichage" et décochez la case "Quadrillage"

2. Vous devriez renommer vos textboxes de manière progressive. Là on passe de 8 à 20 alors que vous n'avez que 7 textboxes

Merci pour votre réponse,

Désolé, je ne suis pas expliqué mon problème correctement,

Mon problème c'est que tant que je déclare le nombre des couche est supérieur à 9 , le code n'est marché pas, pourquoi je ne sais pas.

Merci

Mon problème c'est que tant que je déclare le nombre des couche est supérieur à 9 , le code n'est marché pas, pourquoi je ne sais pas

Quand vous écrivez "ne marche pas", c'est en cliquant sur un bouton après avoir mis un chiffre supérieur à 9 en textbox8 "Nombre de couches" ou c'est le code que je vous ai proposé ?

Edit : j'ai ajouté une instruction dans le code de mon post précédent

Bonsoir ;
Merci pour votre réponse,
le nombre des couche est en fonction de chaque projet, peut être supérieur à 9;
et je remarque si par exemple nombre de couche égal à 15, le code ne marche pas que pour la deuxième couche.
merci.
13la-geologie.xlsm (24.20 Ko)
bonjour,
Private Sub CommandButton2_Click()
     Dim i     As Integer
     Dim ajout As Long
     ajout = 6
     With Sheets("La Nature Géologique")
          i = Application.Min(Application.Max(1, Me.Label12.Caption - 1), .Range("I7").Value)     ' 1<= i <= range("I7") !!!
          TextBox3.Value = .Range("c" & ajout + i).Value
          TextBox4.Value = .Range("c" & ajout).Offset(i, 1).Value
          TextBox5.Value = .Range("c" & ajout).Offset(i, 3).Value
          TextBox6.Value = .Range("c" & ajout).Offset(i, 4).Value
          Me.Label12.Caption = i
     End With
End Sub

Private Sub CommandButton3_Click()
     Dim i     As Integer
     Dim ajout As Integer
     'ajout = Range("B" & Rows.Count).End(xlUp).Row + 1
     'Rows(ajout).Insert 'insertion d'une ligne juste en dessous du tableau
     i = Me.Label12.Caption
     If i = 1 Then
          Me.TextBox3.Value = 0
          Me.TextBox3.Enabled = False
     End If
     With Sheets("La Nature Géologique")
          If WorksheetFunction.Median(1, i, .Range("i7").Value) = i Then     ' 1<= i <= range("I7") ?
               ajout = 6
               .Range("i7") = TextBox1
               .Range("j7") = TextBox2
               .Range("c" & ajout + i).Value = TextBox3.Value
               .Range("c" & ajout).Offset(i, 1).Value = TextBox4.Value
               .Range("c" & ajout).Offset(i, 3).Value = TextBox5.Value
               .Range("c" & ajout).Offset(i, 4).Value = TextBox6.Value
               .Range("c" & ajout).Offset(i, -1).Value = i
          End If

          i = Application.Min(Application.Max(1, Me.Label12.Caption + 1), .Range("I7").Value)     ' 1<= i <= range("I7") !!!
          Me.Label12.Caption = i
          TextBox3.Value = .Range("c" & ajout).Offset(i - 1, 1).Value
          TextBox4.Value = .Range("c" & ajout).Offset(i, 1).Value
          TextBox5.Value = .Range("c" & ajout).Offset(i, 3).Value
          TextBox6.Value = .Range("c" & ajout).Offset(i, 4).Value
     End With
End Sub

Private Sub TextBox1_Change()
     'If TextBox1 <> "" And TextBox1 > 9 Then MsgBox "le nombre de couche maximum est de 9": Exit Sub
     Sheets("La Nature Géologique").Range("i7") = TextBox1
End Sub
avec cette ligne, vous pouvez limitez i entre un minimim et un maximum 
i = Application.Min(Application.Max(1, Me.Label12.Caption - 1), .Range("I7").Value)     ' 1<= i <= range("I7") !!!

Merci beaucoup pour votre réponse .

juste je veux de bien vouloir, pourquoi l'ancien code ne marche pas que (i<=9) ? portant logiquement c'est juste.

re,

If --Me.Label12.Caption < --Range("i7") Then

ce sont 2 valeurs de type "string", donc des textes !!! Et en texte "2" > "10" , mais en multipluant avec 1 ou en ajoutant "--" (= 2 fois multiplier avec -1), ils deviennent des valeurs et à partir de ce moment, 2 < 10, cequi est logique !

Merci beaucoup pour votre explication ,

Rechercher des sujets similaires à "creation formule saisie donnees via userform"