VBA [Résolu]

Comuto 3 Messages postés jeudi 28 décembre 2017Date d'inscription 29 décembre 2017 Dernière intervention - 28 déc. 2017 à 15:54 - Dernière réponse : Comuto 3 Messages postés jeudi 28 décembre 2017Date d'inscription 29 décembre 2017 Dernière intervention
- 29 déc. 2017 à 18:52
Bonjour à tous !
Alors voilà, je vous explique mon problème. Je voudrais faire une boucle Pour dans laquelle "Mat" est une valeur qu'il doit prendre dans un tableau et "Résultat" un nom associer à cette valeur mais voilà le problème ... Je ne sais pas si je m'y prend bien mais un débogage est nécessaire à chaque essai d'où le fait que je vous demande votre aide.

Merci d'avance.

For i = 2 To 22
     Mat = 0
        Do While Re > Mat
          Mat = Sheets(Projet).Range("B" & "i").Value
          Résultat = Sheets(Projet).Range("A" & "i").Value
        Loop
     Next i
  Label5.Caption = CStr(Résultat)
Afficher la suite 

4 réponses

Répondre au sujet
Patrice33740 6390 Messages postés dimanche 13 juin 2010Date d'inscription 29 décembre 2017 Dernière intervention - 28 déc. 2017 à 17:50
0
Utile
1
Bonjour et bienvenue sur CCM,

Tout d'abord, ici c'est pas le Forum VBA mais le Forum Excel. Le Forum VBA est ici :
http://www.commentcamarche.net/forum/vb-vba-267

Mais ce n'est pas très grave, je vois cette erreur tous les jours.

A première vue ton code devrait fonctionner a condition que Re et Projet aient été définis avant.

Quand tu poses une question sur le code il est préférable de mettre l'intégralité du code (comme dans ton cas, le problème peut se situer avant)
Il faut aussi préciser sur quelle ligne pointe le débogueur et le message d'erreur qu'il donne.

qq conseils :
- Commences tous tes modules pas Option Explicit
- Plus tu est rigoureux moins tu as de problème

Il y a une erreur avec "i" dans :
Mat = Sheets(Projet).Range("B" & "i").Value
ce qui équivaut à
Mat = Sheets(Projet).Range("Bi").Value

Préférer Worksheets à Sheets d'où :
Mat = Worksheets(Projet).Range("B" & i).Value

Idem pour Résultats
Comuto 3 Messages postés jeudi 28 décembre 2017Date d'inscription 29 décembre 2017 Dernière intervention - 29 déc. 2017 à 15:27
Oups ... Je tenais tout d'abord à m'excuser de ma bourde. Mais voilà, je vous ai repris le code entier mais toujours pas de résultat. Si vous pouviez y jeter un coup d’œil s'il vous plait. Le débogueur se place à la ligne en italique avec une erreur d'exécution '9': l'indice n'appartient pas à la sélection.

Cordialement.


Private Sub CommandButton3_Click()
Dim Re, Nombre1, Nombre2, Nombre3 As Double
Dim Résultat As String
Dim Val, i, Mat As Integer

If (IsNumeric(TextBox1.Value) And IsNumeric(TextBox2.Value) And IsNumeric(TextBox3.Value)) Then    
     Nombre1 = CDbl(TextBox1.Value)                      
     Nombre2 = CDbl(TextBox2.Value)
     Nombre3 = CDbl(TextBox3.Value)
    If (0 > Nombre1 Or 0 >= Nombre2 Or 0 > Nombre3) Then            
      Val = MsgBox("Pas dans l'intervalle", vbExclamation)      
    Else
     Re = (Nombre1 * Nombre3) / Nombre2  
     For i = 2 To 22
     Mat = 0
        Do While Re > Mat                  'Comparer la valeur de Re calculé à une valeur donnée sur une feuille
          <ital>Mat = Worksheets(Projet).Range("Bi").Value</ital>       
          Résultat = Worksheets(Projet).Range("Ai").Value      'Le nom associer à cette valeur "mat"
        Loop
     Next i
  Label5.Caption = CStr(Résultat)
    End If
Else
Val = MsgBox("Pas numérique", vbExclamation)    
End If
End Sub
Commenter la réponse de Patrice33740
ccm81 8211 Messages postés lundi 18 octobre 2010Date d'inscription 29 décembre 2017 Dernière intervention - Modifié par ccm81 le 29/12/2017 à 17:17
0
Utile
1
Bonjour

Trois erreurs au moins...
1. Le nom de la feuille doit être entre guillemets
2. l'adresse variable "Ai" >>> "A" & i
3. Ta boucle Do while .... loop tourne en rond

Un début ?
Private Sub CommandButton3_Click()
Dim Re, Nombre1, Nombre2, Nombre3 As Double
Dim Résultat As String
Dim Val, i, Mat As Double
If (IsNumeric(TextBox1.Value) And IsNumeric(TextBox2.Value) And IsNumeric(TextBox3.Value)) Then
     Nombre1 = CDbl(TextBox1.Value)
     Nombre2 = CDbl(TextBox2.Value)
     Nombre3 = CDbl(TextBox3.Value)
    If (0 > Nombre1 Or 0 >= Nombre2 Or 0 > Nombre3) Then
      Val = MsgBox("Pas dans l'intervalle", vbExclamation)
    Else
     Re = (Nombre1 * Nombre3) / Nombre2
     i = 2
     Mat = 0
     Do While Re > Mat Or i = 23
       'Comparer la valeur de Re calculé à une valeur donnée sur une feuille
        Mat = Worksheets("Projet").Range("B" & i).Value
        Résultat = Worksheets("Projet").Range("A" & i).Value      'Le nom associer à cette valeur "mat"
        i = i + 1
     Loop
  Label5.Caption = CStr(Résultat)
    End If
Else
Val = MsgBox("Pas numérique", vbExclamation)
End If
End Sub


Cdlmnt
Comuto 3 Messages postés jeudi 28 décembre 2017Date d'inscription 29 décembre 2017 Dernière intervention - 29 déc. 2017 à 18:52
Merci beaucoup, ça fonctionne parfaitement maintenant ! Bonne soirée.
Commenter la réponse de ccm81