Alléger le code
Fermé
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
-
Modifié le 5 avril 2019 à 18:27
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - 11 avril 2019 à 09:57
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - 11 avril 2019 à 09:57
A voir également:
- Alléger le code
- Le code ascii - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
4 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
8 avril 2019 à 12:22
8 avril 2019 à 12:22
Bonjour Blalaa, bonjour le forum,
Peut-être comme ça :
À tester...
Peut-être comme ça :
Sub essai_qpdc() Dim NW As Worksheet 'déclare la variable NW (onglet NEW_VB_config) Dim TbO(1 To 11) As Worksheet 'déclare le tableau des 11 variables (Tableau des Onglets) Dim I As Integer 'déclare la variable I (Incrément) Dim J As Byte 'déclare la variable J (incrément) Dim COL As Integer 'déclare la variable COL (COLonne) Dim x As Byte, y1 As Byte, y22 As Byte, y3 As Byte Dim y As Variant, y2 As Variant 'je ne sais pas à quoi servent ces variables ?!... Set NW = Worksheets("NEW_VB_config") 'définit l'onglet NW For J = 1 To 11 'boucle 1 : sur 11 valeurs de 1 à 11 (11 onglets) If NW.Cells(J + 1, "O").Value <> "" Then 'condition 1 : si la cellule ligne J+1, colonne O de l'onglet n'est pas vide Set TbO(J) = Worksheets(NW.Cells(J + 1, "O").Value) 'définit l'onglet TbO(J) For I = 2 To 10000 'boucle 2 : sur 10000 lignes (pourquoi ne pas utiliser la dernière ligne vide de la colonne N ?!...) If TbO(J).Cells(I, "N") <> "" Then 'condition 2 : si la cellule de la boucle en colonne N n'est pas vide x = Left(TbO(J).Cells(I, "N"), 1) 'définit la varaible x y = Left(TbO(J).Cells(I, "N"), 2) 'définit la varaible y (à quoi sert-elle ?!...) y1 = Right(y, 1) 'définit la varaible y1 y2 = Left(TbO(J).Cells(I, "N"), 3) 'définit la varaible y2(à quoi sert-elle ?!...) y22 = Right(y2, 1) 'définit la varaible y22 y3 = Right(TbO(J).Cells(I, "N" & I), 1) 'définit la varaible y3 If TbO(J).Cells(I, "A") = Range("A1") Then 'condition 3 : si la cellule ligne I colonne A de l'onglet Tbo(J) est égale à A1 (A1 de quel onglet ?!... Mieux vaut préciser !) COL = x + 26 'définit la colonne COL Cells(I, COL) = x 'renvoie x Cells(x + 1, "W") = Application.Sum(Range(Cells(2, COL), Cells(10000, COL))) / x 'fait la somme des lignes 2 à 10000 de la colonne COL divisée par x COL = y1 + 30 'définit la colonne COL Cells(I, COL) = y1 'renvoie y1 Cells(x + 1, "X") = Application.Sum(Range(Cells(2, COL), Cells(10000, COL))) / x 'fait la somme des lignes 2 à 10000 de la colonne COL divisée par x COL = y22 + 34 'définit la colonne COL Cells(I, COL) = y22 'renvoie y22 Cells(x + 1, "Y") = Application.Sum(Range(Cells(2, COL), Cells(10000, COL))) / x 'fait la somme des lignes 2 à 10000 de la colonne COL divisée par x COL = y3 + 38 'définit la colonne COL Cells(I, COL) = y3 'renvoie y3 Cells(x + 1, "Z") = Application.Sum(Range(Cells(2, COL), Cells(10000, COL))) / x 'fait la somme des lignes 2 à 10000 de la colonne COL divisée par x End If 'fin de la condition 3 End If 'fin de la condition 2 Next I 'prochaine ligne de la boucle 2 End If 'fin de la condition 1 Next J 'prochain onglet de la boucle 1 End Sub
À tester...
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
Modifié le 9 avril 2019 à 09:59
Modifié le 9 avril 2019 à 09:59
Re,
Je t'avoue que je n'ai pas testé, tu penses bien...
Toutefois, je crois que ca marche pas ne veux absolument rien dire. Ou ça marche, ou ça marche pas !... Et si ça marche pas, quelle est la ligne qui plante ?
Je t'avoue que je n'ai pas testé, tu penses bien...
Toutefois, je crois que ca marche pas ne veux absolument rien dire. Ou ça marche, ou ça marche pas !... Et si ça marche pas, quelle est la ligne qui plante ?
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
9 avril 2019 à 10:01
9 avril 2019 à 10:01
Re
il m'affiche directement me message d'erreur " 400 "
il m'affiche directement me message d'erreur " 400 "
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
9 avril 2019 à 11:32
9 avril 2019 à 11:32
Re,
Oui d'accord ! Mais quand il t'affiche le message, il ouvre une boîte de dialogue qui te propose l'option Débogage. Clique dessus et tu verras une ligne surlignée de jaune. C'est cette ligne qu'il nous faut pour mieux comprendre.
Sinon, pour éviter de perdre notre temps, je te conseille de proposer le fichier via un hébergeur style : https://www.cjoint.com/
Oui d'accord ! Mais quand il t'affiche le message, il ouvre une boîte de dialogue qui te propose l'option Débogage. Clique dessus et tu verras une ligne surlignée de jaune. C'est cette ligne qu'il nous faut pour mieux comprendre.
Sinon, pour éviter de perdre notre temps, je te conseille de proposer le fichier via un hébergeur style : https://www.cjoint.com/
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
10 avril 2019 à 09:45
10 avril 2019 à 09:45
bonjour
je viens de mettre le fichier
excusez pour ce retard je vous en remercie
je viens de mettre le fichier
excusez pour ce retard je vous en remercie
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
Modifié le 10 avril 2019 à 11:48
Modifié le 10 avril 2019 à 11:48
Où ça ? il te faut nous donner le lien vers...
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
10 avril 2019 à 13:12
10 avril 2019 à 13:12
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
10 avril 2019 à 15:05
10 avril 2019 à 15:05
Re,
Première constatation : chez moi pas d'erreur !...
Mais :
• Premier problème dans ton code initial avec la condition :
qui avec mon code est devenu :
A1 Vaut toujours Projet. Tu aura beau boucler, la condition ne se réalisera jamais...
• Second problème tu utilises, copies, colles ou envoie des valeurs dans des cellules sans en spécifier l'onglet. Ça marche mais cela signifie qu'il s'agit toujours de l'onglet NEW_VB_config.
Sinon, si tu renvoies un fichier, fait l'effort d'y mettre suffisamment de données pour que les tests soient significatifs !...
Si j'ai bien compris voici un code modifié :
Première constatation : chez moi pas d'erreur !...
Mais :
• Premier problème dans ton code initial avec la condition :
If Worksheets(a).Range("a" & i) = Range("a1") Then
qui avec mon code est devenu :
If TbO(J).Cells(I, "A") = Range("A1") Then
A1 Vaut toujours Projet. Tu aura beau boucler, la condition ne se réalisera jamais...
• Second problème tu utilises, copies, colles ou envoie des valeurs dans des cellules sans en spécifier l'onglet. Ça marche mais cela signifie qu'il s'agit toujours de l'onglet NEW_VB_config.
Sinon, si tu renvoies un fichier, fait l'effort d'y mettre suffisamment de données pour que les tests soient significatifs !...
Si j'ai bien compris voici un code modifié :
Sub essai1_qpdc()
Dim NW As Worksheet 'déclare la variable NW (onglet NEW_VB_config)
Dim TbO() As Worksheet 'déclare la variable TbO (Tableau des Onglets)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim COL As Integer 'déclare la variable COL (COLonne)
Dim x As Byte, y1 As Byte, y22 As Byte, y3 As Byte
Dim y As Variant, y2 As Variant 'je ne sais pas à quoi servent ces variables ?!...
Dim DLO As Integer 'déclare la variable DLO (Dernière Ligne de la colonne O)
Dim DLN As Integer 'déclare la variable DLN (Dernière Ligne de la colonne N)
Set NW = Worksheets("NEW_VB_config") 'définit l'onglet NW
DLO = NW.Cells(Application.Rows.Count, "O").End(xlUp).Row 'définit la dernière ligne éditée DLO de la colonne O de l'onglet NW
ReDim Preserve TbO(2 To DLO) 'redimensionne le tableau TbO
For J = 2 To DLO 'boucle 1 : sur toutes les ligne J de 2 à DLO
If NW.Cells(J, "O").Value <> "" Then 'condition 1 : si la cellule ligne J, colonne O de l'onglet n'est pas vide
Set TbO(J) = Worksheets(NW.Cells(J, "O").Value) 'définit l'onglet TbO(J)
DLN = TbO(J).Cells(Application.Rows.Count, "N").End(xlUp).Row 'définit la dernière ligne éditée de la colonne N de l'onglet TbO(J)
'Debug.Print TbO(J).Name, DLN 'pour tests
For I = 2 To DLN 'boucle 2 : sur toutes les lignes de 2 à DLN
If TbO(J).Cells(I, "N") <> "" Then 'condition 2 : si la cellule de la boucle en colonne N n'est pas vide
x = Left(TbO(J).Cells(I, "N"), 1) 'définit la varaible x
y = Left(TbO(J).Cells(I, "N"), 2) 'définit la varaible y (à quoi sert-elle ?!...)
y1 = Right(y, 1) 'définit la varaible y1
y2 = Left(TbO(J).Cells(I, "N"), 3) 'définit la varaible y2(à quoi sert-elle ?!...)
y22 = Right(y2, 1) 'définit la varaible y22
y3 = Right(TbO(J).Cells(I, "N"), 1) 'définit la varaible y3
If TbO(J).Cells(I, "A") = Range("A1") Then 'condition 3 : si la cellule ligne I colonne A de l'onglet Tbo(J) est égale à A1 (A1 de quel onglet ?!... Mieux vaut préciser !)
COL = x + 26 'définit la colonne COL
TbO(J).Cells(I, COL) = x 'renvoie x
TbO(J).Cells(x + 1, "W") = Application.Sum(TbO(J).Range(TbO(J).Cells(2, COL), TbO(J).Cells(10000, COL))) / x 'fait la somme des lignes 2 à 10000 de la colonne COL divisée par x
COL = y1 + 30 'définit la colonne COL
TbO(J).Cells(I, COL) = y1 'renvoie y1
TbO(J).Cells(x + 1, "X") = Application.Sum(TbO(J).Range(TbO(J).Cells(2, COL), TbO(J).Cells(10000, COL))) / x 'fait la somme des lignes 2 à 10000 de la colonne COL divisée par x
COL = y22 + 34 'définit la colonne COL
TbO(J).Cells(I, COL) = y22 'renvoie y22
TbO(J).Cells(x + 1, "Y") = Application.Sum(TbO(J).Range(TbO(J).Cells(2, COL), TbO(J).Cells(10000, COL))) / x 'fait la somme des lignes 2 à 10000 de la colonne COL divisée par x
COL = y3 + 38 'définit la colonne COL
TbO(J).Cells(I, COL) = y3 'renvoie y3
TbO(J).Cells(x + 1, "Z") = Application.Sum(TbO(J).Range(TbO(J).Cells(2, COL), TbO(J).Cells(10000, COL))) / x 'fait la somme des lignes 2 à 10000 de la colonne COL divisée par x
End If 'fin de la condition 3
End If 'fin de la condition 2
Next I 'prochaine ligne de la boucle 2
End If 'fin de la condition 1
Next J 'prochain onglet de la boucle 1
Range("b2") = Range("w2") + Range("w6") + Range("w10") + Range("w14") + Range("w18") + Range("w22") + Range("w26") + Range("w30") + Range("w34") + Range("w38") + Range("w42")
Range("b3") = Range("w3") + Range("w7") + Range("w11") + Range("w15") + Range("w19") + Range("w23") + Range("w27") + Range("w31") + Range("w35") + Range("w39") + Range("w43")
Range("b4") = Range("w4") + Range("w8") + Range("w12") + Range("w16") + Range("w20") + Range("w24") + Range("w28") + Range("w32") + Range("w36") + Range("w40") + Range("w44")
Range("b5") = Range("w5") + Range("w9") + Range("w13") + Range("w17") + Range("w21") + Range("w25") + Range("w29") + Range("w33") + Range("w37") + Range("w41") + Range("w45")
Range("c2") = Range("x2") + Range("x6") + Range("x10") + Range("x14") + Range("x18") + Range("x22") + Range("x26") + Range("x30") + Range("x34") + Range("x38") + Range("x42")
Range("c3") = Range("x3") + Range("x7") + Range("x11") + Range("x15") + Range("x19") + Range("x23") + Range("x27") + Range("x30") + Range("x35") + Range("x39") + Range("x43")
Range("c4") = Range("x4") + Range("x8") + Range("x12") + Range("x16") + Range("x20") + Range("x24") + Range("x28") + Range("x30") + Range("x36") + Range("x40") + Range("x44")
Range("c5") = Range("x5") + Range("x9") + Range("x13") + Range("x17") + Range("x21") + Range("x25") + Range("x29") + Range("x30") + Range("x37") + Range("x41") + Range("x45")
Range("d2") = Range("y2") + Range("y6") + Range("y10") + Range("y14") + Range("y18") + Range("y22") + Range("y26") + Range("y30") + Range("y34") + Range("y38") + Range("y42")
Range("d3") = Range("y3") + Range("y7") + Range("y11") + Range("y15") + Range("y19") + Range("y23") + Range("y27") + Range("y30") + Range("y35") + Range("y39") + Range("y43")
Range("d4") = Range("y4") + Range("y8") + Range("y12") + Range("y16") + Range("y20") + Range("y24") + Range("y28") + Range("y30") + Range("y36") + Range("y40") + Range("y44")
Range("d5") = Range("y5") + Range("y9") + Range("y13") + Range("y17") + Range("y21") + Range("y25") + Range("y29") + Range("y30") + Range("y37") + Range("y41") + Range("y45")
Range("e2") = Range("z2") + Range("z6") + Range("z10") + Range("z14") + Range("z18") + Range("z22") + Range("z26") + Range("z30") + Range("z34") + Range("z38") + Range("z42")
Range("e3") = Range("z3") + Range("z7") + Range("z11") + Range("z15") + Range("z19") + Range("z23") + Range("z27") + Range("z30") + Range("z35") + Range("z39") + Range("z43")
Range("e4") = Range("z4") + Range("z8") + Range("z12") + Range("z16") + Range("z20") + Range("z24") + Range("z28") + Range("z30") + Range("z36") + Range("z40") + Range("z44")
Range("e5") = Range("z5") + Range("z9") + Range("z13") + Range("z17") + Range("z21") + Range("z25") + Range("z29") + Range("z30") + Range("z37") + Range("z41") + Range("z45")
End Sub
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
11 avril 2019 à 09:57
11 avril 2019 à 09:57
Bonjour
je vous remercie pour ts ce temps que vous avez consacre pour mon programme
je vais le tester
merci encore
je vous remercie pour ts ce temps que vous avez consacre pour mon programme
je vais le tester
merci encore
Modifié le 9 avril 2019 à 08:56
merci pour le code, je vais le rester si ca marche
pour repondre a vos questions sur la valeur y et y2
en faite dans mes cellules n jai un cfifre qui contient 4 nombre qui peuvent etre compose de 1 a 4 (exemple 1111, 1234 ,3333 ,4444,4231......) donc je recupere a chque fois le premier nombre apre le 2 apre le 3 apres le 4 eme
exmple dans la cellule n4 = 1234
x=1
y1=2
y22=3
y3=4
voila jespere que jai repondu a votre questions
merci encore
9 avril 2019 à 09:00
il maffiche erreur (400)