Dates reconnues aléatoirement en VBA sous Excel 2003

Boby71C

Nouveau membre
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:
[cpp]'Récupérer les dates de début et fin des activités
Dim c As Variant

Set c = Cells.Find(What:="20", After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase _
:=True)
If Not c Is Nothing Then
DebHar = c.Offset(0, -3).Value
FinHar = c.Offset(0, -2).Value
If c.Offset(0, 1).Value = "0 hr" Then
DebHar = 0
FinHar = 0
End If
Else
DebHar = 0
FinHar = 0
End If
[/cpp]

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
 

guillaumech

Expert
S'auto détruira ? Hummm ... avec l'aide d'un modo :(
Zeb veut te dire d'éditer ton message, et d'utiliser les balises
Code:
 

Boby71C

Nouveau membre
Bonjour Zeb et Guillaumech
Excusez moi si j'ai faits une petite erreur.

J'espère avoir compris la correction à apporter sinon, tant pis pour moi.

Merci pour votre aide
@+
Robert
 

zeb

Modérateur
Vous devez être connecté pour voir les images.

Nous, informaticiens du XXème siècle, nous avons besoin de dire "Erreur ligne 7" au lieu de mettre en gras la ligne en erreur.

 

Freeman23

Expert
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.
 

Boby71C

Nouveau membre
Bonsoir les amis
Excusez moi de vous répondre si tardivement.
Avant tout , très bonne année à tous

La solution de Freeman23 fonctionne. C'est impeccable.

Merci

Au plaisir de vous relire.
@+
Robert
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 850
Membres
1 586 373
Dernier membre
https://forum.tomshardwar
Partager cette page
Haut