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 :

VBA - Reprendre des informations quand existant


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Janvier 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Janvier 2023
    Messages : 4
    Par défaut VBA - Reprendre des informations quand existant
    Bonjour,

    Je souhaiterai faire en sorte que dans ma colonne J, si une feuille ne comprend aucune donnée sur cette case, il ne soit rien reporté. Par contre, s'il est indiqué quelque chose, que la formule se fasse, comment je peux améliorer ?

    J'ai fait plusieurs tests de formules mais soit, j'ai les noms de chaque onglet, même vide, soit j'ai le nom du dernier onglet concerné.
    Alors qu'en fait, je voudrais avoir le nom de l'onglet uniquement lorsqu'il y a une donnée.

    Par exemple dans l'onglet fichier récap, je ne devrais retrouver en ligne 10 - colonne J, que le nom de la feuille avec le ok mais pas de nom de feuille vide.
    En ligne 12, ma colonne J devrait être vide.

    Je ne sais pas si quelqu'un peut m'aider ?
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'avoue que vos explications ne sont pas très claires pour moi et comme je n'ouvre pas les fichiers joints, j'essaye de traduire.
    Ce que j'ai compris c'est que vous souhaitez avoir la liste des feuilles qui ont des données et c'est là que je me perds dans vos explications des lignes 12, 10 , colonne J, etc.

    Voici un petit exemple qui vous mettra peut-être sur la piste où j'affiche dans un MsgBox la liste des feuilles qui contiennent au moins une donnée dans une cellule de la colonne E soit la cinquième (voir la valeur de la constante.
    J'utilise l'équivalent de la fonction NBVAL (CountA)

    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
    Sub t()
      Const ColumnNumber As Integer = 5
      Dim sht As Worksheet
      Dim fx As WorksheetFunction
      Set fx = Application.WorksheetFunction
      Dim t As String
      t = "Liste des feuilles ayant des données en colonne " & Chr(64 + ColumnNumber) & vbCrLf
      For Each sht In Worksheets
        With sht
          If fx.CountA(.Columns(ColumnNumber)) Then
             t = t & vbCrLf & .Name
          End If
        End With
      Next
      MsgBox t
      Set sht = Nothing: Set fx = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut Aide
    Bonjour
    s'il n'y a pas beaucoup de feuilles, vous pourriez envisager la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI('UT1'!J10="";"";"UT1 - "&'UT1'!J10)&CAR(10)&SI('UT2'!J10="";"";"UT2 - "&'UT2'!J10)&CAR(10)&SI('UT3'!J10="";"";"UT3 - "&'UT3'!J10)
    à mettre en J10 sur la feuille récap

    si le retour à la ligne (Car(10)) est de trop, enlevez le évidemment.

    Restant à dispo

  4. #4
    Candidat au Club
    Femme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Janvier 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Janvier 2023
    Messages : 4
    Par défaut
    Je comprends complètement pour l'ouverture des fichiers, en fait, c'était par rapport au fichier pour illustrer mais voici un extrait du code :

    Sub Actualiser()
    Dim i As Integer, j As Integer

    Application.ScreenUpdating = False
    Call Effacer

    For i = 1 To Sheets.Count
    If Left(Sheets(i).Name, 2) <> "UT" Then GoTo Etiquette
    With Sheets(i)
    For j = 10 To Range("E" & Rows.Count).End(xlUp).Row
    If .Range("F" & j) = "Oui" Then
    If Range("F" & j) = "" Then
    Range("F" & j) = Sheets(i).Name
    Else
    Range("F" & j) = Range("F" & j) & Chr(10) & Sheets(i).Name
    End If
    If Range("G" & j) = "" Then
    Range("G" & j) = Sheets(i).Name & " - " & .Range("G" & j)
    Else
    Range("G" & j) = Range("G" & j) & Chr(10) & Sheets(i).Name & " - " & .Range("G" & j)
    End If
    If .Range("H" & j) > Range("H" & j) Then Range("H" & j) = .Range("H" & j)
    If .Range("I" & j) > Range("I" & j) Then Range("I" & j) = .Range("I" & j)
    If Range("J" & j) = "" Then
    Range("J" & j) = Sheets(i).Name & " - " & .Range("J" & j)
    Else
    Range("J" & j) = Range("J" & j) & Chr(10) & Sheets(i).Name & " - " & .Range("J" & j)
    End If

    J'ai tenté ce que vous m'avez dit mais cela ne fonctionne pas car il y a d'autres conditions préalables je pense

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    c'était par rapport au fichier pour illustrer mais voici un extrait du code :
    Si vous n'obtenez pas ce que vous souhaitez avec le code que vous avez écrit, ce n'est certainement pas comme cela que je vais comprendre ce que vous souhaitez avoir;

    Votre profil, indique que vous êtes responsable d'exploitation informatique, vous avez donc l'habitude d'écrire des dossiers d'analyse donc si vous pouviez expliquer sans jargon informatique et avec une éventuelle illustration ce que vous souhaitez obtenir, ce serait plus simple
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Candidat au Club
    Femme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Janvier 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Janvier 2023
    Messages : 4
    Par défaut
    Aujourd'hui,
    --> Un certain nombre de feuilles ayant la même racine en nom doivent être synthétisés dans une feuille récap en reprenant le nom de chacune des feuilles pour comprendre d'où viennent les données
    --> Si à la colonne F, la réponse est "oui", alors les données de la ligne dans les colonnes suivantes doivent être reprises
    --> Cela fonctionne très bien, sauf que si une des colonnes suivantes est vide, on va avoir dans la feuille récap, le nom de la feuille suivi d'aucune donnée dans cette même colonne, ce qui alourdit cette synthèse

    Le code actuel est fait avec une règle pour chaque colonne puisqu'il peut y avoir des données chiffrées avec certaines spécificités. L'amélioration souhaitée concerne uniquement les colonnes qui contiennent potentiellement du texte.

    Je voulais donc améliorer pour que les données d'une ligne qui doivent être reprises, ça soit toujours le cas, mais que si dans l'une des colonnes, il n'y a aucune donnée, alors on n'indique pas le nom de la feuille.

    Je ne sais pas si c'est plus clair ?

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est effectivement nettement plus clair.
    Reste encore quelques interrogations
    Peut-il y avoir plusieurs lignes avec le texte "Oui" dans la colonne F
    Si la cellule d'une colonne de la ligne trouvée est vide, faut-il vérifier les colonnes suivantes ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2010] Ajouter des informations dans le nom de fichier existant en VBA
    Par mijean94 dans le forum Excel
    Réponses: 4
    Dernier message: 22/09/2022, 22h11
  2. [Toutes versions] Récupérer des informations dans un document word par vba à partir d'un signet
    Par sellig60 dans le forum VBA Word
    Réponses: 4
    Dernier message: 08/09/2013, 20h32
  3. [VBA] réception des informations d’email
    Par jeha dans le forum Access
    Réponses: 11
    Dernier message: 08/10/2006, 01h55
  4. [VBA-E]DELETEr des lignes quand SOMME de 2 cellules =0
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2006, 01h03
  5. Existe t-il un parseur HTML pou extraire des informations?
    Par danje dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 31/10/2005, 11h55

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