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 :

Afficher une plage de cellule dans une autre feuille sous condition [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Afficher une plage de cellule dans une autre feuille sous condition
    Bonjour,

    Je débute avec les macros d'excel et j'aimerai trouver le code qui correspond au problème suivant:

    - J'ai une feuille (liée à une base de donnée) dont les données s'actualisent quotidiennement (ajout de ligne supplémentaire etc...)

    - J'aimerai afficher certaines de ces données dans une autre feuille de calcul. Problème : l'ajout de ligne par actualisation de donnée change l'emplacement des valeurs à afficher (une simple formule ex : =A1 ne prend pas en compte l'ajout des lignes par actualisation et par conséquent affiche une valeur fausse à chaque actualisation).

    - Exemple :

    Sur ma feuille 1:
    AVANT actualisation j'ai : A1="série en cours" (titre du tableau) , A2="France" , A3="Allemagne" , B2=7 , B3=5 , C2=2 , C3=5
    APRES actualisation l'ensemble s'est décalé de 2 lignes : A3="série en cours" , A4="France"...

    Après actualisation les valeurs affichées sur la feuille 2 reste A1 , A2 ...

    Je voudrai donc une macro qui cherche dans la colonne A la condition "série en cours" et quand la condition est VRAI affiche sur la feuille 2 la plage de donnée (A?:C?)* qui se trouve en-dessous de l'emplacement de la cellule contenant "série en cours" avec possibilité de choisir l'emplacement d'affichage.

    * ? dépendra de la ligne qui contient "série en cours"

    Je ne sais pas si mon problème est exposé clairement, mais merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Bonjour,

    Ça peut se faire par macro, mais ça peut aussi se faire par formule...
    Si tu inscris "série en cours" en A1 de ta 2e feuille, tu peux faire des RechercheV pour trouver les autres valeurs.
    Tu peux aussi utiliser Index avec Equiv

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Tout d'abord merci pour votre réponse,

    Je ne pense pas pouvoir utiliser ces formules car elles renvoient un résultat d'une seule cellule (on spécifie la colonne de résultat et la plage des variables...). J'aimerai pouvoir avoir plusieurs cellules contenues sur plusieurs colonnes et lignes comme résultat...

    .................A....................B....................C
    1 ....série en cours.....................................
    2 ....France.......................5...................10
    3 ....Allemagne..................4....................8

    Sachant que les valeurs des colonnes b et c changent constamment, et que série en cours peut être placé de A1 jusqu'à A330
    J'aimerai avoir la plage (A1:C3) afficher en A1 de ma feuille 2 peut importe ou la cette plage se trouve (rappel : la plage bouge par actualisation de données et non par insertion de ligne)

    Si je peux utiliser une formule pour cette procédure ca serait génial mais une macro me convient également..

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    De la façon dont je comprends, les mots "série en cours" peuvent se trouver n'importe où, mais une seule fois.
    Mais est-ce que France ou Allemagne, disons, sont des mots qui se répètent plusieurs fois dans cette page ?

    voici une exemple simple pour 2 pays
    Si tu veux suivre plusieurs pays, il faudrait améliorer le tout un peu...

    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
     
        Dim I As Long, nbLignes As Long
        Dim Rng As Range
     
        nbLignes = Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
        Set Rng = Sheets("Feuil1").Columns("A").Find("série en cours", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
        If Not Rng Is Nothing Then
            For I = Rng.Row To nbLignes
                'Ici, s'il y a plusieurs cas, utiliser un Select Case serait plus lisible
                'Et une deuxième boucle (et un tableau de pays) pourrait s'avérer utile
                If LCase(Sheets("Feuil1").Range("A" & I)) = "france" Then
                    Sheets("Feuil2").Range("B2") = Sheets("Feuil1").Range("B" & I)
                    Sheets("Feuil2").Range("C2") = Sheets("Feuil1").Range("C" & I)
                ElseIf LCase(Sheets("Feuil1").Range("A" & I)) = "allemagne" Then
                    Sheets("Feuil2").Range("B3") = Sheets("Feuil1").Range("B" & I)
                    Sheets("Feuil2").Range("C3") = Sheets("Feuil1").Range("C" & I)
                End If
            Next
        End If

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci pour la solution

    J'ai également poussé mes recherches et j'ai un code un peu plus simple quand la variation de l'emplacement de la cellule test est plus ample :

    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
    Sub Bouton1_Cliquer()
     
        Dim variable As String, numero As Integer
     
        variable = "Série en cours"
        numero = 1
     
     
        Do Until Cells(numero, 1) = variable 'Début de la boucle
     
        numero = numero + 1 'Le numéro est augmenté de 1 à chaque boucle
     
        Loop 'Fin de la boucle
     
         If Cells(numero, 1) = variable Then  'condition
     
        Range("A" & numero & ":D" & (numero) + 4).Select 'copier coller avec variable colonnes
        Selection.Copy
        Sheets("Feuil2").Select
        Range("A1").Select
        ActiveSheet.Paste
     
         End If 'Fin de la condition
     
    End Sub
    La boucle se terminera lorsque la condition sera rempli (le bon emplacement de "série en cours") et de là commence l'affichage des données par copier coller avec la condition pour assurer le tout...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] InputBox pour sélectionner cellule ou une plage de cellules dans une feuille.
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/02/2014, 20h01
  2. enregistrer une plage de cellules dans un autre fichier
    Par Kiphrine dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2009, 11h14
  3. Comparaison cellules avec une plage de données dans un autre fichier
    Par Jibi64 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/08/2008, 17h22
  4. Trouver une plage de cellule dans une autre plage
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 0
    Dernier message: 16/04/2008, 15h27

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