Calculer des données avec excel vba

Résolu
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 5 août 2007 à 01:27
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 5 août 2007 à 16:40
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

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

c'était pour mes tests...

MPi
3
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
5 août 2007 à 01:49
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.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
5 août 2007 à 15:23
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
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
5 août 2007 à 15:45
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).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
5 août 2007 à 16:05
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
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
5 août 2007 à 16:40
Merci beaucoup, ca fonctionne très bien.
0
Rejoignez-nous