Plage vers Tableau

Résolu
Jolafleche -  
 Jolafleche -
Bonjour,

Je début en VBA, et j'ai besoin de créer une fonction qui me permet de m' indiquer quelle fiche est absente du registre. Pour cela j'ai créer une fonction...mais je bloque sur l'attribution de mon arguments dans un tableau si quelqu'un peut m'aider merci....:-D

Public Function territoire_manquant(plage_date As Range, plage_fiche As Range)

Dim cel_date, valeur As String
Dim cel_fiche() As String

Dim i As Integrer

cel_fiche = plage_fiche.Value

For Each cel_date In plage_date

If IsEmpty(cel_date) Then
valeur = cel_fiche(i) & "||" & valeur

i = i + 1

Next cel_date

MsgBox valeur

End Function


J'ai donc une erreur #VALUE ....je me doute que l'attribution de cel_fiche est incorrect car que je fait un msgbox cel_fiche, cela ne me retourne rien....

Merci pour votre aide.
Cordialement

2 réponses

  1. Zoul67 Messages postés 2001 Statut Membre 149
     
    Bonjour,

    Je crois qu'on part de loin...
    - il n'y a pas de End If
    - i n'est pas initialisé
    - comment lie-t-on cel_date à cel_fiche ?
    - comment appelles-tu la fonction ?
    - faut-il une fonction ou une procédure (Sub) ?

    Je pense qu'il vaut mieux commencer de zéro avec les données dont tu disposes et l'expression de ton besoin ("détecter les fiches absentes de ton registre" est un bon premier pas, mais on ne connait pas ta structure de données). Pour ce faire, peux-tu partager ton fichier via https://www.cjoint.com/ ?

    A+
    0
    1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
       
      Bonjour,

      Je ne comprend rien. i n'a pas été défini. cel_fiche(i) ne veut rien dire puisque i n'est rien.

      cel_date et cel_fiche n'ont rien à voir pour l'instant...

      Cordialement.
      0
  2. Jolafleche
     
    Merci pour ta réponse rapide, je débute en VBA mais ce n'est pas mon premier language ;-)

    Du coup j'ai oublié en effet le Endif et l'initialisation de "i", des erreurs bêtes j'en suis conscient...!

    Par contre, cel_date et cel_fiche ne sont pas lié vu que se sont 2 plages différentes....Ou alors mon raisonnement est faux.

    J'apelle la fonction via une celulle sur le classeur.

    Le lien vers le classeur http://www.cjoint.com/c/EJhjG0KImJ8
    0
    1. Zoul67 Messages postés 2001 Statut Membre 149
       
      Public Function fiche_manquant(plage_date As Range, plage_fiche As Range)
      
      Dim valeur As String
      
          For Each cel_date In plage_date
              If IsEmpty(cel_date) Then
                 valeur = valeur & cel_date.Offset(0, -5).Value & "||"
              End If
             
          Next cel_date
      
      MsgBox valeur
      fiche_manquant = valeur
      End Function


      L'appel de la fonction est bon, c'est déjà ça. Je te laisse supprimer l'argument plage_fiche qui n'est plus utilisé dans la fonction.
      0
    2. Jolafleche
       
      Ah bah oui bien sur, je me cassais la tête avec 2 plage, mais simplement en me déplaçant sur la feuille cela fonctionnais....!!

      Merci beaucoup Zoul67 !
      0