Fonction si avec cellule contenant image comme condition.

Dr Zero Messages postés 1058 Date d'inscription   Statut Membre Dernière intervention   -  
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, tout le monde

Aux esprit brillant et/ou tortueux Alors.Ceux qui trouvent que des neurones qui se reposent est un gachi pour l'humanité :: :))).

Mon problème est le suivant :
J'ai des image qui s'intègrent à une cellule ou plutôt disons liées à une cellule. Ce que je souhaite c'est que dans la cellule B, Excel m'affiche 1 si la cellule A contient une image.

Ah,disons que je préfère des fonction excel car nul en VBA, mais s'il le faut je m'y mettrai.

dans l'attente de vos suggestion. Cordiallement.


A voir également:

4 réponses

Raymond PENTIER Messages postés 58989 Date d'inscription   Statut Contributeur Dernière intervention   17 353
 
Avec ou sans macro, tu es mal parti !
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Bonjour,

Faudrait voir un bout de ton fichier pour voir la façon dont tu insères tes images
pour joindre ton fichier, utilise ce lien
https://www.cjoint.com/
0
Dr Zero Messages postés 1058 Date d'inscription   Statut Membre Dernière intervention   208
 
Merci de l'intérêt porté à mon poste.
J'ai fais des commentaire dans le fichier Excel ci joint. Attend patiemment tes idées.
Voici le lien avec mon exemple :
https://www.cjoint.com/?0CjwxkcRotH
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

j'espère avoir compris la demande parce que je m'absente 2 jours

=NBVAL(C3:F3)

si les cellules sont vides, le résultat est 0 que tu peux éviter en complétant la formule
=SI(NBVAL(C3:F3)=0;"";NBVAL(C3:F3))
0
Dr Zero Messages postés 1058 Date d'inscription   Statut Membre Dernière intervention   208
 
Bonsoir Mike-31
Au fait l'image qui apparait dans la cellule ne permet pas à excel de considérer que la cellule contient une information, donc avec le si() comme dans mon exemple, ou avec les fonction NB (NBVAL comme proposé ou NB.VIDE) excel ne voit que dalle même si l'image est lié à la cellule.

Exp avec ta formule : NBVAL(C3:F3) renvoie toujours 0 même si j'ai une image dans le cellule D3.

c'est pour ce que je tourne en rond.

D'autres Idées :)))

cordialement
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

Ton fichier s'ouvre mal sur excel 2010, pas d'images dedans. Ok sur 2003

Tu n'as pas le choix, vba obligatoire.
Par fonction personnalisée à mettre dans un module standard :
Function nbImages(plage As Range)
    Dim img As Picture
    Application.Volatile
    For Each img In plage.Parent.Pictures
        If Not Intersect(img.TopLeftCell, plage) Is Nothing Then nbImages = nbImages + 1
    Next img
End Function

Le coin supérieur gauche doit être dans la cellule.
Faire F9 pour rafraichir le compte.
https://www.cjoint.com/c/ECktHgwTCMo

eric
0
Dr Zero Messages postés 1058 Date d'inscription   Statut Membre Dernière intervention   208
 
Hello
Merci a toi eriiic. Je vais voir ça et je demanderai certainement des conseils car en matière de macro je suis largué. Mais il faut un début à tout.

En effet pas d'ouverture avec le 2010 mais pas de Pb avec le 207 ??? les image sont créer pas un écriture sur écran tactile.
A demain le temps de voir et comprendre (ce que je peu) pour poser des question de débutant :))).

Finalement une chose : je ne comprends pas ou plutôt sais pas comment faire : Par fonction personnalisée à mettre dans un module standard :
En plus dans votre formule colonne G j'ai #NOM (je présume que c'est en rapport avec le module standard à faire ??)

Merci d'avance pour ta patience.
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

Alt+F11 pour ouvrir l'éditeur VBE.
Sur le projet de ton classeur à gauche, clic-droit et 'Insertion / Module'.
Coller le code dans dans cette nouvelle fenêtre à droite.
Ca y est, ta nouvelle fonction est disponible sur les feuilles.
N'oublie pas F9 pour rafraichir. L'ajout ou le déplacement d'image n'est pas détectable par VBA.
eric
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Salut Éric,

J'ai de plus en plus la certitude que 2010 est bogué : pour moi, il voit très bien les images mais ta fonction ne les voit pas alors que sur 2007 tout est nickel.
Après les modifs de taille dans les listbox, les copies dans les tableaux, les suppression de lignes, etc, je commence à atteindre l'overdose.
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Salut gb,

Effectivement, je n'avais pas testé le résultat sur 2010.
J'ai creusé un peu. En fait ce ne sont des images que sur 2003.
Sur les autres versions ce sont des InkComment. J'ai l'impression que ce sont des objets spécifiques à la saisie graphique manuelle.
Donc nouvelle version, testée sur 2003, 2010, 2013. A voir sur 2007.
Function nbImages(plage As Range)
    Dim obj As Shape
    Application.Volatile
    For Each obj In plage.Parent.Shapes
        Debug.Print obj.Type, obj.Name, obj.AutoShapeType
        If obj.Type = msoInkComment Or obj.Type = msoPicture Then
            ' msoPicture sur 2003, msoInkComment sur 2007-2013
            If Not Intersect(obj.TopLeftCell, plage) Is Nothing Then nbImages = nbImages + 1
        End If
    Next obj
End Function

J'ai failli t'appeler au secours hier soir :-) Mais en rédigeant le post détaillé une piste m'est apparue et c'était la bonne.

@Dr Zero : si tu n'as pas des centaines d'objets sur la feuille on peut ajouter un truc pour que la fonction se mette à jour sur la sélection d'une cellule quelconque.

eric
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Salut Éric,

Sur 2007, c'est tout bon mais c'était déjà tout bon avant. Pour le calcul, tout le monde a quelque chose de différent du Z80 et donc cela devrait aller ! ;-)
0