Vérification de présence de nombres dans cellules

Fermé
Merocco Messages postés 17 Date d'inscription mercredi 26 février 2014 Statut Membre Dernière intervention 5 avril 2017 - 7 avril 2015 à 19:04
Raymond PENTIER Messages postés 58651 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 septembre 2024 - 8 avril 2015 à 14:49
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

DjiDji59430 Messages postés 4110 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 14 septembre 2024 668
7 avril 2015 à 19:43
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
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié par ozone_ le 7/04/2015 à 21:30
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
Raymond PENTIER Messages postés 58651 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 septembre 2024 17 198
Modifié par Raymond PENTIER le 8/04/2015 à 02:00
... 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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 411
Modifié par Vaucluse le 8/04/2015 à 08:07
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merocco Messages postés 17 Date d'inscription mercredi 26 février 2014 Statut Membre Dernière intervention 5 avril 2017
8 avril 2015 à 08:32
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
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié par ozone_ le 8/04/2015 à 09:18
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
Merocco Messages postés 17 Date d'inscription mercredi 26 février 2014 Statut Membre Dernière intervention 5 avril 2017 > ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023
Modifié par Merocco le 8/04/2015 à 10:29
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
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié par ozone_ le 8/04/2015 à 11:34
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
DjiDji59430 Messages postés 4110 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 14 septembre 2024 668
8 avril 2015 à 11:19
Bonjour,

Tes informations arrivent au compte-goutte !
Peux tu faire une explication claire et exhaustive de ton probléme ??
0
Merocco Messages postés 17 Date d'inscription mercredi 26 février 2014 Statut Membre Dernière intervention 5 avril 2017
8 avril 2015 à 14:41
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
Raymond PENTIER Messages postés 58651 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 septembre 2024 17 198
8 avril 2015 à 14:49
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