avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
5 août 2007 à 01:27
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDerniè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 ?
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 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.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 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).
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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