Se connecter avec
S'enregistrer | Connectez-vous

Dates reconnues aléatoirement en VBA sous Excel 2003

Dernière réponse : dans Programmation

Bonjour à tous

Je collecte des dates de début et de fin d'activités pour les retranscrire sous forme graphique dans Excel.

A chaque importation de l'ensemble des données d'un nouveau projet, je formate mes colonnes de dates pour assurer la mise en forme.

Plusieurs dizaines de projets passent et brutalement, un bug se déclare sur la ligne en gras:

Erreur 1004 définie par l'application ou par l'object.

Si je vais sur les données du projet qui ne passe pas ,qui donne les dates et dès que je refais manuellement la même mise en forme et que je remonte au niveau de Set c, je continue le déroulement du code VBA par F5, tout passe correctement.

Erreur décelée en ligne 7.

Voici une partie du code:
  1. 'Récupérer les dates de début et fin des activités
  2. Dim c As Variant
  3.  
  4. Set c = Cells.Find(What:="20", After:=ActiveCell, LookIn:=xlValues, LookAt _
  5. :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase _
  6. :=True)
  7. If Not c Is Nothing Then
  8. DebHar = c.Offset(0, -3).Value
  9. FinHar = c.Offset(0, -2).Value
  10. If c.Offset(0, 1).Value = "0 hr" Then
  11. DebHar = 0
  12. FinHar = 0
  13. End If
  14. Else
  15. DebHar = 0
  16. FinHar = 0
  17. End If


Je ne peux joindre mon fichier qui fait 12 MO.

Auriez vous déjà eu ce problême et avez vous trouvé une parade ?
Me manquerait-il une macro complémentaire, mais laquelle ?

Merci pour votre aide

@+
Robert
Lassé par la pub ? Créez un compte

Salut,

Quelques infos sur la fonction find :

Cette méthode recherche une information spécifique dans une plage et renvoie un objet Range qui représente la première cellule où cette information apparaît. Cette méthode renvoie la valeur Nothing si l'information n'est pas trouvée. N'affecte ni la sélection ni la cellule active.

Comme tu vois ca renvoie un objet Range hors tu déclares c en tant que variant (qui est un type de données et non un objet), donc à mon avis tester nothing quand tu n'a pas de résultat ca doit provoquer une erreur car un variant n'est jamais nothing mais plutot null.

Donc essaie en remplaçant Variant par Range, car a part cela je ne vois par d'erreur dans le code.
Lassé par la pub ? Créez un compte