Erreur sur une macro (VBA ) excel

Résolu
pixel -  
 Pixel -
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

3 réponses

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    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
    1. pixel
       
      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
    2. pilas31 Messages postés 1878 Statut Contributeur 648
       
      A d'accord,

      alors il faut tester par rapport à 1 si C7 commence par 613 alors le InStr donnera 1
      0
    3. pixel
       
      comment ca je ne comprend pas trop votre solution
      0
    4. pixel
       
      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
    5. pilas31 Messages postés 1878 Statut Contributeur 648
       
      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
  2. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    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
    1. pixel
       
      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
  3. pilas31 Messages postés 1878 Statut Contributeur 648
     
    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
    1. Pixel
       
      je vais essayer de suite en tous cas merci
      0
    2. Pixel
       
      petite question dans les ecriture que tu ma envoyer celon ne concerne que C7?
      0
    3. Pixel
       
      bonjour pilas31 désolé de vous déranger mais si vous pouviez m'aider encore un peu svp
      0
    4. Pxel
       
      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
    5. pilas31 Messages postés 1878 Statut Contributeur 648
       
      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