IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ecrire une fonction "retraitement d'informations"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Par défaut Ecrire une fonction "retraitement d'informations"
    Bonjour à toutes et à tous,

    je suis débutante en VB, et depuis quelques jours, je tente en vain d'écrire une fonction que j'appelle "fonction de retraitement d'informations".


    Je travaille sur un fichier Excel comportant des informations dans 8 onglets, et le but est de créer un 9eme onglet d'un formalisme différent, qui va chercher les informations dans les 8 premiers. J'ai réussi à générer ce dernier onglet, et j'essaye actuellement de le renseigner. La première difficulté pour moi est que les informations contenues dans les cellules des 8 premiers onglets sont variables!

    Je cherche à écrire une fonction qui remplirait la colonne N de l'onglet 9, et qui dirait:

    Si la valeur texte contenue dans la cellule H1 de l'onglet 9, existe uniquement dans l'onglet 7:
    --> Ecrire la valeur "3" dans la cellule N1 de l'onglet 9.

    Si la valeur texte contenue dans la cellule H1 de l'onglet 9, existe uniquement dans l'onglet 8:
    --> Ecrire la valeur "7" dans la cellule N1 de l'onglet 9.

    Si la valeur texte contenue dans la cellule H1 de l'onglet 9, existe à la fois dans l'onglet 7 et 8:
    --> Ecrire la valeur "3" dans la cellule N1 de l'onglet 9.

    Si la valeur texte contenue dans la cellule H1 de l'onglet 9, n'existe pas, ni dans l'onglet 7 ou 8:
    --> Ne rien écrire dans la cellule N1 de l'onglet 9.

    J'espère être assez claire! Je cherche donc auprès de vous des pistes pour écrire cette fonction?

    Je vous remercie,

    Marie

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    outre le fait que tu ne précises pas ce que tu entends par "n'est/n'est pas dans un onglet X" (dans tout l'onglet? dans une zone précise de l'onglet ?)

    tes conditions
    Si la valeur texte contenue dans la cellule H1 de l'onglet 9, existe uniquement dans l'onglet 7:
    --> Ecrire la valeur "3" dans la cellule N1 de l'onglet 9.

    Si la valeur texte contenue dans la cellule H1 de l'onglet 9, existe uniquement dans l'onglet 8:
    --> Ecrire la valeur "7" dans la cellule N1 de l'onglet 9.

    Si la valeur texte contenue dans la cellule H1 de l'onglet 9, existe à la fois dans l'onglet 7 et 8:
    --> Ecrire la valeur "3" dans la cellule N1 de l'onglet 9.

    Si la valeur texte contenue dans la cellule H1 de l'onglet 9, n'existe pas, ni dans l'onglet 7 ou 8:
    --> Ne rien écrire dans la cellule N1 de l'onglet 9.
    peuvent se synthétiser ainsi :

    Soit Toto la valeur de H1 de l'onglet 9

    - Si Toto existe dans l'onglet 7 : écrire 3 dans l'onglet 9
    - Sinon, si Toto existe dans l'onglet 8 : écrire 7 dans l'onglet 9
    Bref, un simple IF/ELSE/END IF ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Par défaut
    Merci pour cette réponse rapide!

    Oui, je voulais dire "est ou n'est pas présente dans une certaine partie de l'onglet"

    D'accord,

    donc je devais ecrire quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    If valeur.H1 existe dans l'onglet 7 = 1 Then
     
           'Ecrire la valeur 3 dans la cellule N1
     
    ElseIf valeur.H1 existe dans l'onglet 8 = 1 Then
     
           'Ecrire la valeur 7 dans la cellule N1
        End If
    Else
           'Ne rien écrire
    End If
    Mais comment est-ce que je traduis les notions de "existe dans l'onglet X" et "ecrire la valeur Y" ?

    Merci

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Je te conseille d'utiliser la méthode Find, regarde l'aide à ce sujet

    s'il y a un résultat, tu obtient un objet Range qui est la position où est le résultat
    sinon, tu obtient un objet vide (Nothing)

    tu as juste à tester si ton find renvoie un objet instancié ou un objet Nothing, pour savoir si la valeur a été trouvée

    il y a des milliers d'exemples de l'utilisation de Find dans ce contexte sur le forum, fait une petite recherche

  5. #5
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Bonjour,

    en supposant que tes onglets s'appelle Feuil7,Feuil8, Feuil9

    essaie ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Sub test()
     
        Dim onglet_7 As Boolean
        Dim onglet_8 As Boolean
     
        onglet_7 = True
        onglet_8 = True
     
        For i = 7 To 8
     
            Sheets("Feuil" & i).Activate
     
            Set resultatRecherche = Cells.Find(What:=Sheets("Feuil9").Range("H1").Value)
            Set PremiereCellule = resultatRecherche
     
            If resultatRecherche Is Nothing Then
                If i = 7 Then onglet_7 = False
                If i = 8 Then onglet_8 = False
            End If
     
        Next
     
        If onglet_7 = True And onglet_8 = False Then
     
            Sheets("Feuil9").Range("N1").Value = "3"
     
        ElseIf onglet_7 = False And onglet_8 = True Then
     
            Sheets("Feuil9").Range("N1").Value = 7
     
        ElseIf onglet_7 = True And onglet_8 = True Then
     
            Sheets("Feuil9").Range("N1").Value = 3
     
        Else
     
            Sheets("Feuil9").Range("N1").Value = ""
     
        End If
     
    End Sub

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Par défaut
    Bonjour,

    merci beaucoup, j'ai essayé et ca fonctionne!
    En plus, j'ai l'impression d'avoir compris! Par contre, pouvez-vous (peux-tu?) m'expliquer ces deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set resultatRecherche = Cells.Find(What:=Sheets("Feuil9").Range("H1").Value)
    Set PremiereCellule = resultatRecherche
    Comment est-ce que je peux étendre cet algorithme à toutes les valeurs de la colonne H?

    Encore merci !

Discussions similaires

  1. Ecrire une fonction d'accès à un membre
    Par dhoorens dans le forum C++
    Réponses: 3
    Dernier message: 01/01/2007, 20h01
  2. [javascript] Ecrire une fonction "include"
    Par gscorpio dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/10/2006, 11h49
  3. [VB6]Ecrire une fonction dans ma feuille Excel
    Par ToxiK dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 08/06/2006, 21h04
  4. Réponses: 1
    Dernier message: 07/06/2006, 19h18
  5. Réponses: 15
    Dernier message: 15/12/2005, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo