Vérification de présence de nombres dans cellules

Merocco Messages postés 18 Statut Membre -  
Raymond PENTIER Messages postés 58227 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai une feuille Excel dans laquelle j'exporte des valeurs depuis un logiciel externe.

Ce sont des blocs de 45 lignes et 4 colonnes remplies de valeurs.

24 blocs au total sont exportés avec une ligne de séparation entre chaque bloc.

J'aimerais créer, sur une autre feuille du même classeur, quelque chose pour contrôler que mes 24 blocs de valeurs soient complets, il ne doit manquer aucune valeur dans le bloc.

Auriez vous une solution à me proposer ? (Image ci-jointe pour avoir un aperçu)

Merci d'avance,

Merocco

7 réponses

  1. DjiDji59430 Messages postés 4280 Date d'inscription   Statut Membre Dernière intervention   718
     
    Bonjour,

    en e2= si(nbval(a2:d2)=4;"";"X") que tu descends jusqu'au bout. Les X t'indiqueront ou il manque une valeur
    0
  2. ozone_ Messages postés 1823 Statut Membre 511
     
    Salut

    Voici une proposition :
    ' Déclaration des variables
    Dim a%, d%, i%, y%
    
    
    Sub test()
    
    ' Attribution aux variables
    a = 2: d = 46: y = 1
    
    ' Vide la plage de la feuille 'Feuil2' avant de la remplir
    Sheets("Feuil2").Range("A1:A24").Value = ""
    
    For i = 1 To 24
        
        ' Compte les valeurs vides dans les différents blocs
        compte = WorksheetFunction.CountBlank(Sheets("Feuil1").Range("A" & a & ":D" & d))
        
        ' Si un bloc possède une ou plusieurs valeurs vides,
        If compte > 0 Then
            ' J'affiche le N° du bloc ainsi que son nombre de valeurs vides
            ' Dans la feuille nommé 'Feuil2' en A1 (Et qui s'incrémente si le nombre de bloc augmente avec la variable y)
            Sheets("Feuil2").Range("A" & y).Value = "Le bloc N° " & i & " possède " & compte & " valeur vide."
            y = y + 1
        End If
        
        a = a + 46: d = d + 46
    Next
    
    End Sub


    Ce code est à mettre dans ThisWorkbook.
    En faisant alt + F11 dans la partie à gauche > ThisWorkbook

    Il faut que la feuille d'où provient les 24 blocs de valeurs s'appelle Feuil1 et que la feuille où tu souhaites avoir les erreurs d'affichées s'appelle Feuil2

    Ensuite créer un bouton dont la macro est Test()
    Développeur > Insérer > Bouton

    Exemple : https://www.cjoint.com/c/EDhvRh53HCP

    1f u c4n r34d th1s u r34lly n33d t0 g37 l41d !
    0
  3. Raymond PENTIER Messages postés 58227 Date d'inscription   Statut Contributeur Dernière intervention   17 490
     
    ... mais si tu veux seulement t'assurer qu'aucune cellule n'est vide, tu peux te contenter de la formule =4320-NB(A:D) qui doit être égale à zéro !

    Et si par hasard parmi tes 4320 données importées il y a des textes, la formule doit s'écrire =4320-NBVAL(A:D) ...

    C'est bien, la retraite ! Surtout aux Antilles ... :-)
    Raymond (INSA, AFPA, CF/R)
    0
  4. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    pour créer un tableau affichant les nombres de valeurs des plages:

    en E2: ="A"&=(LIGNE()-2)*25+2

    (ceci afin d'identifier le départ de chaque tableau pour signaler les incomplets)

    en D2, à tirer sur la hauteur utile:

    =SI(NBVAL(INDIRECT(C2&":D"&(LIGNE()-2)*25+25))<96;"incomplet";"OK")

    crdlmnt
    Errare humanum est, perseverare diabolicum
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Merocco Messages postés 18 Statut Membre
     
    En fait, c'est finalement un peu plus compliqué que ça...

    Le logiciel a été programmé pour qu'il saute une ligne lorsque qu'il ne détecte pas de valeurs à mesurer (comme dans l'encadré bleu sur l'image).

    Mon souci c'est que je dois m'assurer qu'il y aie bien des blocs de 45 lignes x 4 colonnes de valeurs (même si les cellules sont vides) dans tous les cas, toujours avec une séparation d'une ligne entre chaque bloc de valeurs. (voir encadrés rouges)


    Ca complique hein ? :)

    Merci d'avance pour votre aide.
    0
    1. ozone_ Messages postés 1823 Statut Membre 511
       
      Et la macro que j'ai faite plus haut de convient pas ?
      Ici elle t'indiquerai que le premier bloc comporte 8 valeurs vides et le deuxième 16 et enfin le troisième 1 seule valeur vide.
      0
      1. Merocco Messages postés 18 Statut Membre > ozone_ Messages postés 1823 Statut Membre
         
        Ta macro est intéressante et bien faite, mais seulement, parfois, il arrive que le logiciel bug et n'exporte pas correctement. De ce fait, il ne saute pas de ligne et écrit directement à la ligne en dessous.

        Du coup, il arrive que j'aie seulement 43 lignes dans mon bloc... Et c'est ce que je ne veux pas :)
        0
    2. ozone_ Messages postés 1823 Statut Membre 511
       
      La macro va toujours parcourir une sélection 45 lignes sur 4 colonnes.
      Tout comme le reste des formules que les autres membres ont proposés.

      Comme le dit DjiDji59430, dis nous exactement ce que tu recherche/souhaite.
      0
  7. DjiDji59430 Messages postés 4280 Date d'inscription   Statut Membre Dernière intervention   718
     
    Bonjour,

    Tes informations arrivent au compte-goutte !
    Peux tu faire une explication claire et exhaustive de ton probléme ??
    0
  8. Merocco Messages postés 18 Statut Membre
     
    Bonjour,

    Excusez-moi, je suis un peu aux fraises aujourd'hui.

    J'exporte, via un logiciel externe, 24 blocs de valeurs, comprenant 45 lignes et 4 colonnes.

    C'est en réalité une programme de 24 plaques contenant 45 pièces chacune, sur lesquelles 4 cotes sont mesurées sur chacune des pièces. Mon programme mesure donc les 4 cotes de chaque pièce à tour de rôle.

    Lorsqu'il a mesuré les 4 cotes sur une pièce, mon programme fait un saut de ligne lorsqu'il exporte dans excel.

    Voilà pourquoi il y a 24 blocs avec 45 lignes de 4 valeurs.

    Au cours de la mesure, lorsque le logiciel ne détecte pas de pièce, il effectue le saut de ligne normalement comme à la fin de chaque pièce, laissant donc une ligne vide dans l'export.

    Lorsqu'il est arrivé à la fin de la mesure d'une plaque, il passe à la plaque suivante en sautant 2 lignes dans l'export, laissant ainsi une séparation.

    Mon logiciel n'exporte pas toujours de manière fiable. C'est pourquoi il lui arrive de zapper le saut de ligne, me laissant donc un bloc inférieur à 45 lignes, entraînant un décalage des valeurs de chaque pièce et donc une grande erreur.

    Pour améliorer cette fiabilité, je souhaiterais mettre en place un contrôle rapide de cette mesure.

    Il faut donc impérativement qu'il y aie 45 lignes présentes dans chacun de mes blocs exportés, avec une ligne vide pour séparer chaque bloc.

    J'aimerais donc une solution pour m'assurer que l'export de 24 blocs avec 45 lignes, avec une ligne de séparation vide entre chaque bloc, se soit fait correctement.

    Si ce n'est pas clair, je répondrai à vos questions.

    Merci d'avance.
    0
    1. Raymond PENTIER Messages postés 58227 Date d'inscription   Statut Contributeur Dernière intervention   17 490
       
      Si tu avais pris la peine d'expliquer tout cela dès ton premier message, tu nous aurais évité des pertes de temps superflues ...
      0