Calculer des données avec excel vba [Résolu]

Signaler
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Bonjour à tous,

J'ai un petit problème avec un script qui me semble un peux dangeureux.

Voici le script:

Set Recherche = Columns("C:C").Find(TextBox270)
    If Not Recherche Is Nothing Then
       Ligne = Recherche.Row
       Range("AV" & Ligne) = Range("AD" & Ligne) + Range("AD" & Ligne + 1) + Range("AD" & Ligne + 2) + Range("AD" & Ligne + 3) + Range("AD" & Ligne + 4) + Range("AD" & Ligne + 5) + Range("AD" & Ligne + 6) + Range("AD" & Ligne + 7) + Range("AD" & Ligne + 8) + Range("AD" & Ligne + 9) + Range("AD" & Ligne + 10) + Range("AD" & Ligne + 11) + Range("AD" & Ligne + 12) + Range("AD" & Ligne + 13) + Range("AD" & Ligne + 14) + Range("AD" & Ligne + 15) + Range("AD" & Ligne + 16) + Range("AD" & Ligne + 17) + Range("AD" & Ligne + 18) + Range("AD" & Ligne + 19) + Range("AD" & Ligne + 20)
      
Je voudrais faire une recherche de TextBox270 à TextBox289 au lieu d'utiliser la fonction Range("AD" & Ligne + 1), ("AD" & Ligne + 2) ,+ 3 etc.

Comment modifier le script pour faire l'addition selon les recherche des textBox 270 à 289 ?

6 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Remplace Range("B" & Recherche.Row)
par Range("AD" & Recherche.Row)

c'était pour mes tests...

MPi
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
Plus d'info:

Range("AD" & Ligne) = TextBox270
Range("AD" & Ligne + 1) = TextBox271
Range("AD" & Ligne + 2) = TextBox272

Range("AD" & Ligne + 3) = TextBox273

Range("AD" & Ligne + 4) = TextBox274 etc.

Le pourquoi que je dit que c'est dangereux comme code, c'est que si il manque une ligne qui correspond à la donnée du TextBox289 disons, il va fauser le calcul. Il doit seulement calculer les données qui correspond au TextBox 270 à 289.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Salut,

Je ne comprends pas vraiment ce que tu cherches à faire...
Tu veux additionner les textbox ou les cellules de la feuille ?
Tu commences par faire une recherche du textbox270 en colonne C puis tu écris
Range("AD" & Ligne) = TextBox270

Quoiqu'il en soit, tu devrais tout mettre ça dans une boucle, que ce soit les textbox ou les cellules
Pour additionner des textbox
    For I = 270 To 289
        Total = Total + Me.Controls("Textbox" & I)
    Next

Pour l'addition des cellules
    For I = 270 To 289
        Total = Total + Range("AD" & I)
    Next

MPi
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
Si je prend par exemple la valeur du TextBox270.qui represente un chiffre concatené du genre  PB053331. La il recherche se numéro dans mon fichier excel et il va dans la colone AD et prend la valeur.

Dans le TextBox271, il aurait la valeur PB053332 et prend la valeurs dans la colone AD sur la ligne.

Il fait la même chose pour les textbox270 à 289.

Ensuite, il additionne tous les valeurs de la colone AD selon les valeurs des TextBox et il me met la somme total sur la ligne du textBox270 = Range("AV" & Ligne).
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
OK,
Donc, si je comprends mieux, chaque textbox contient un "code" que tu recherches dans la colonne C et tu additionnes ce qu'il y a en AD, si trouvé... Il faut donc boucler tes textbox pour la recherche et emmagasiner le résultat de l'addition.

    Dim I As Integer, Total As Double
    Dim Recherche As Range
   
    For I = 270 To 289
        Set Recherche = Columns("C").Find(Me.Controls("Textbox" & I).Value)
        If Not Recherche Is Nothing Then
            Total = Total + Range("B" & Recherche.Row)
             Set Recherche = Nothing
        End If
    Next
   
    MsgBox Total

MPi
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
Merci beaucoup, ca fonctionne très bien.