Erreur sur une macro (VBA ) excel

Résolu/Fermé
pixel - 21 mai 2010 à 10:21
 Pixel - 27 mai 2010 à 13:27
Bonjour,
je cherche a trouver l'erreur présent sur ma macro :
'Si la date de fin de contrat ne correspond pas à l'année en cours
'Se mettre dans le fichier "mensuel"
Workbooks(Fichier).Activate
If Range("K11") > Range("K9") And InStr(1, CStr(Range("C7").Value) <> "613") And InStr(1, CStr(Range("D7").Value) <> "613") And InStr(1, CStr(Range("E7").Value) <> "613") Then
'Se mettre dans le fichier "Saisie" onglet "Tab 9-3 Marchés pluriannuels"
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Activate
ligne = 7
While Not IsEmpty(Cells(ligne, 1))
ligne = ligne + 1
Wend
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Cells(ligne, 1).Value = Range("H10").Value
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Cells(ligne, 2).Value = Range("B5").Value
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Cells(ligne, 3).Value = Range("B4").Value
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Cells(ligne, 4).Value = Range("H9").Value
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Cells(ligne, 6).Value = Range("H5").Value
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Cells(ligne, 7).Value = Range("H6").Value
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Cells(ligne, 8).Value = Range("").Value
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Cells(ligne, 9).Value = Range("").Value
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Cells(ligne, 10).Value = Range("").Value
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Cells(ligne, 11).Value = Range("H59").Value
Workbooks("Saisie.xls").Sheets("Tab 9-3 Marchés pluriannuels").Cells(ligne, 12).Value = Range("H60").Value
'Insérer une ligne dans le tableau "Tab récup données" fichier "Saisie"
Worksheets("Tab 9-3 Marchés pluriannuels").Rows(8).Insert Shift:=xlShiftDown
End If

svp si quelqu'un si connais je serai contante qu'il puisse m'aider
merci d'avance


A voir également:

3 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 21/05/2010 à 10:53
Bonjour à tous,

A première vue c'est ce test qui n'est pas bon :

InStr(1, CStr(Range("C7").Value) <> "613")

Ecrire plutôt :

InStr(1, CStr(Range("C7").Value), "613") <> 0 idem pour D7 et E7


ou bien InStr(1, CStr(Range("C7").Value), "613") = 0 selon si l'on souhaite que la chaine contienne ou non "613"

A+
Cordialement,
3
oui mais ecrire "InStr(1, CStr(Range("C7").Value), "613") <> 0 " ca veut pas dire "si C7 commence par 613 alors"? si c'est le cas c'est pas se que je veux mais plutot dire "Si c7 est différent d'un nombre commencant par 613 alors"
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
21 mai 2010 à 10:57
A d'accord,

alors il faut tester par rapport à 1 si C7 commence par 613 alors le InStr donnera 1
0
comment ca je ne comprend pas trop votre solution
0
a excuser moi je n'avais pas vu votre essage plus haut modifier. j'ai un question par rapport a cette phrase "InStr(1, CStr(Range("C7").Value), "613") = 0 " si je met sa dans mon code cela va donc me rechercher seulment les nombre ne commencant pas par 613?
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
21 mai 2010 à 11:00
Oui si j'ai bien compris alors le test complet est le suivant :

If Range("K11") > Range("K9") And InStr(1, CStr(Range("C7").Value), "613") = 1 And InStr(1, CStr(Range("D7").Value), "613") =1 And InStr(1, CStr(Range("E7").Value), "613") = 1 Then
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 308
21 mai 2010 à 10:42
Bonjour,

quelle ligne te génère une erreur ? Quel est le message d'erreur renvoyé par VBA ?

Sans ces informations, il est difficile de te répondre correctement.

Cordialement.
0
bonjour
avant tous merci de repondre a ma question
donc en faite je n'ai aucun message d'erreur qui s'affiche et aucune ligne qui ne marche pas mais seulement la condition du "If Range("K11") > Range("K9") And InStr(1, CStr(Range("C7").Value) <> "613") And InStr(1, CStr(Range("D7").Value) <> "613") And InStr(1, CStr(Range("E7").Value) <> "613") Then " ne marche pas. j'obtien rien dans mon tableau
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
21 mai 2010 à 14:15
Re bonjour,

Je répond à la dernière question.
Pour éliminer les lignes dans lesquelles la valeur C7 exsite déjà voila ma proposition :
à inserer avant le ENDIF
......
'Insérer une ligne dans le tableau "Tab récup données" fichier "Saisie"
Worksheets("Tab récup données").Rows(2).Insert Shift:=xlShiftDown

' supprimer les doublons :

For ilig = i - 1 To 2 Step -1
    If Workbooks("Saisie.xls").Sheets("Tab récup données").Cells(ilig, 1).Value = Range("C7").Value _
    Or Workbooks("Saisie.xls").Sheets("Tab récup données").Cells(ilig, 2).Value = Range("C7").Value Then
        Workbooks("Saisie.xls").Sheets("Tab récup données").Rows(ilig).Delete Shift:=xlUp
    End If
Next ilig

Endif




Le principe est de reparcourir (à l'envers) toutes les lignes du tableau depuis i-1 jusquen haut et de tester si la valeur dans C7 existe déjà.

Il faut vérifier si le tableau s'arrète bien en ligne 2 et si les test sont bien cela

A+
0
je vais essayer de suite en tous cas merci
0
petite question dans les ecriture que tu ma envoyer celon ne concerne que C7?
0
bonjour pilas31 désolé de vous déranger mais si vous pouviez m'aider encore un peu svp
0
j'ai essayé votre solution en modifiant la données que je sohaite chercher à savoir B7=au nom du fournisseur
cependant cette donne je veux voir si elle est dans toute la colonne C. Pouvez vous me dire comment je doit indiquer cela svp ?
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
25 mai 2010 à 18:39
Bonjour Pixel,

Je suis resté absent un moment je n'ai donc pas vu le dernier message.

Pour le test, oui il faut l'adapter en se posant la question, une ligne doit être éliminée quand une certaine condition est remplie.

"B7=au nom du fournisseur,
cependant cette donne je veux voir si elle est dans toute la colonne C"


J'avoue que je ne comprends pas cette condition. Peux-tu être un peu plus explicite ?

A+
0