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

Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
- - Dernière réponse : 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 ?
Afficher la suite 

6 réponses

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

c'était pour mes tests...

MPi

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_MPi
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
0
Merci
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.
Commenter la réponse de avyrex1926
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
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
Commenter la réponse de cs_MPi
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
0
Merci
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).
Commenter la réponse de avyrex1926
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
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
Commenter la réponse de cs_MPi
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
0
Merci
Merci beaucoup, ca fonctionne très bien.
Commenter la réponse de avyrex1926