VBA Boucle pour extraire des données numérique de Textbox

Bonjour, à tous

Voila j'ai un petit problème et je n'arrives pas à trouver la solution.

Je possède dans mon userform plusieurs textbox (exactement 185).

Je dois extraire des données numériques de deux texbox (qui ne s'enchainent pas) et les insérer dans une cellule.

J'ai la commande pour ça :

Cells(3 , 18)= Cdbl(textbox5) + Cdbl(textbox8)

L'intêret serait de faire une boucle sinon ça va vraiment être gonflant de faire ça pour chaque textbox j'ai donc essayé un code mais j'ai toujours le même bug :

Private Sub CommandButton1_Click()

For i = 3 to 29

For j = 5 To 183 Step 3

Cells(i, 18) = UserForm1.Controls.CDbl("TextBox" & j ) + UserForm1.Controls.CDbl("TextBox" & j +3)

Next j

Next i

End Sub

Voila merci d'avance à tous !

Bonjour

Essayes

Private Sub CommandButton1_Click()
  For i = 3 To 29
    For j = 5 To 183 Step 3
      Cells(i, 18) = CDbl(Me.Controls("TextBox" & j)) + CDbl(Me.Controls("TextBox" & j + 3))
    Next j
  Next i
End Sub

J'obtiens une erreur d'incompatibilité de type.

Je vous joins l'excel avec le userform


Je précise que la feuille MXXX est la feuille ou les données doivent être insérées et que c'est le userform1 qui est l'objet de mon problème

78macro-analyse.xlsm (54.72 Ko)

Bonjour

Il faudrait que tu expliques un peu plus

J'ai vu que tu as 3 groupes de 30 couples(5 avec 8, 6 avec 9, 7 avec 10, 11 avec 14 etc...)

Sauf que 23 avec 27 (normalement 26 si l'on respecte ta logique), 24 avec 28 (normalement 27) et 25 avec 29 (normalement 28)

Donc tout le reste est décalé

Tu veux recopier ces 30 couple dans 27 lignes (For i = 3 To 29) , comment fait-tu ?

Ta boucle For j = 5 To 183 Step 3

Tu veux ajouter le 5 avec le 8, ensuite le 8 avec le 11, ensuite le 11 avec le 14 etc..... ?

Détailles ce que tu veux faire

Une chose est sure c'est qu'il faut que tu reprennes la numérotation des tes TextBox de 5 à 25 (deviendront 6 à 26), ceci pour les inclure dans une boucle

Ensuite pourquoi 27 lignes pour 30 couples ?

Bonjour,

Effectivement il manque quelques précision.

Il y a 3 couple spéciaux traités à part qui sont les derniers couple en fait. Donc il faut que je vire les 3 derniers de la boucle.

Ensuite effectivement il y a un problème de numérotation dans les textbox (surement du à une faute de copier-coller des textbox) donc j'ai changé les premières numérotation.

Ensuite chaque textbox est dans un seul couple.

C'est à dire la 5 avec la 8, puis la 11 avec la 14 et ainsi de suite (dans le userform, les textbox sont juste en dessus ou en dessous de flèches qui représentent des sections d'une pièce d'ou les couples car il faut ajouter la valeur des textbox).

Donc si j'arrive à trouver le code pour l'un des 3 groupes j'aurai pas de problème pour les 2 autres.

Bonjour

Testes le code suivant (ne remplit que les 3 premières lignes)

Private Sub CommandButton1_Click()
Dim Ligne As Long
Dim J As Integer

  Ligne = 3
  For J = 5 To 17 Step 6
    Cells(Ligne, 18) = Val(Replace(Me.Controls("TextBox" & J), ",", ".")) + Val(Replace(Me.Controls("TextBox" & J + 3), ",", "."))
    Ligne = Ligne + 1
  Next J
End Sub

Yes !

ça marche nickel ! t'es un chef

Bien joué pour le coup de la variable ligne non bouclé.

Par contre par curiosité, pourquoi Val et plus Cdbl ?

Replace permet de remplacer le . par uen virgule pour car sinon ça ne fonctionne pas sous excel si je me rappel bien non ?

En tout cas merci beaucoup

Bonjour

Val accepte les TextBox vides contrairement à Cdbl

Tutu83 a écrit :

Replace permet de remplacer le . par uen virgule

Non juste le contraire

Si tu tapes une virgule ou un point dans ta saisie cela ne gênera la conversion en nombre

Rechercher des sujets similaires à "vba boucle extraire donnees numerique textbox"