Votre question

Vba boucle à alléger

Tags :
  • Microsoft Excel
  • Programmation
Dernière réponse : dans Programmation
Anonyme
3 Juin 2010 21:31:51

Voici mon problème.
Tout part d'un tableau excel sur lequel un collègue et moi travaillons en permanence.
Pour pouvoir travaillé en simultané, nous utilisons chacun une copie du tableau.

extrait du tableau :
colonne 2 colonne 8 colonne 9 colonne 54
affaire article n° de série régul
le reste des colonnes n'est pas intéressant pour mon problème.

Mon collègue travaille sur les colonne de 10 à 53. Il modifie les informations régulièrement et rajoute des lignes.
De mon coté, je ne travaille que sur la colonne 54 (je ne rajoute pas de ligne).
Je voudrais, donc une fois par semaine coordonner nos deux copies du tableau.
donc rétablir la colonne 54 sur son tableau.
J'ai donc crée un simple programme VBA.
Apres avoir copié ma feuille "Régul" dans son classeur pour compléter la colonne 54 sur sa feuille "Suivi"

  1. Dim a As Integer
  2. Dim b As Integer
  3. Dim d As Integer
  4. Dim e As Integer
  5.  
  6. e = 807
  7.  
  8. 'Boucle recherche dans suivi
  9. For a = 2 To e
  10. 'Boucle recherche dans regul
  11. b = 2
  12. While b < e
  13. 'Affaire ?
  14. If Sheets("Suivi").Cells(a, 2) = Sheets("Régul").Cells(b, 2) Then
  15. 'article 8
  16. If Sheets("Suivi").Cells(a, 8) = Sheets("Régul").Cells(b, 8) Then
  17. 'N° Série ? 9
  18. If Sheets("Suivi").Cells(a, 9) = Sheets("Régul").Cells(b, 9) Then
  19. 'Ajout de la régularisation 54
  20. Sheets("Suivi").Cells(a, 54) = Sheets("Régul").Cells(b, 54)
  21. d = e
  22. Else
  23. d = d + 1
  24. End If
  25. Else
  26. d = d + 1
  27. End If
  28. Else
  29. d = d + 1
  30. End If
  31. Wend
  32. Next
  33.  
  34. End Sub


Le programme fonctionne bien
mais le problème est qu'il prend plus de 20 minutes pour le calcul
Il y a t'il un moyen pour alléger ce dernier.
Ou peut être un fonction excel que je ne connais pas :) .
Enfin le but est de gagner du temps.
J'espère avoir était explicite.
Merci d'avance a tout passionné qui pourra m'aider.



Autres pages sur : vba boucle alleger

4 Juin 2010 13:09:22

Bonjour,

Si j'ai bien compris, ton collègue ajoute des lignes pour les colonnes le concernant (10 à 53), mais ne rempli pas les colonnes 2, 8 et 9. Ce qui veut dire qu'il y a des espaces (des lignes vides) pour ces 3 colonnes et que toi tu veux remplir la colone 54 pour ces lignes remplies.

Si c'est le cas, j'ai peut-être une idée!

Je selectionnerais toutes les cellules remplies de la colonne 2 dans un objet Range, puis je ferais un offset pour me placer en colone 54 (offset(0,52)) puis j'utiliserais la propriété Formula qui te permet d'écrire une formule simultanément dans toutes les cellules de ton objet Range.

Petit exemple :

Set MaPlage = Range("B2:B10")

MaPlage.Offset(0,52).Formula = "=Sum(C2:E2)"

On aura dans la feuille exel, dans la cellule :
-B2 : = somme("C2:E2")
-B3 : = somme("C3:E3")
-B4 : = somme("C4:E4")
- etc...

Cela évite de faire une boucle et est du coup beaucoup plus rapide!!

J'espère que j'ai pu t'aider!

m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS