Import de données autre feuille excel

loa

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin d'importer des données d'une autre feuille excel après avoir cliqué sur un CommandButton (sur le même fichier).
En fait chaque CommandButton devra importer des données de feuilles différentes et les mettre à la suite sur une même feuille.

Je ne sais pas si je suis bien clair, demandez moi pour + de précisions.

Merci pour votre aide
 

Yaloo

XLDnaute Barbatruc
Re : Import de données autre feuille excel

Bonjour loa et bienvenu sur XLD,

Avec un fichier représentatif de ce que tu souhaites obtenir, ce serait beaucoup plus simple. Bien sur ne pas mettre de données confidentielles.

A+

Martial
 

loa

XLDnaute Nouveau
Re : Import de données autre feuille excel

Voici mon classeur en PJ.
Sur la feuille Saisie de la demande, j'aimerai pouvoir les différents modules choisis (1 par thème sécurité des personnes/sécurité des aliments etc.) et pouvoir les ajouter à la suite sur la feuille Résultat Evaluation.
J'ai réussi à le faire pour le 1èr thème "Sécurité des personnes" mais je ne sais pas comment ajouter le reste des thèmes à la suite de ce 1er import.

De plus, j'aimerai pouvoir ajouter ces différentes feuilles en cachant les réponses (commençant par une flèche).

J'espère que je suis plus claire avec le fichier joint (j'ai enlevé plusieurs feuilles ainsi que le contenu des feuilles et quelques sommaires pour cause de confidentialité et de taille du fichier).
Merci pour votre aide!
 

Pièces jointes

  • Modules tout réuni envoyé.xlsm
    273.7 KB · Affichages: 63
  • Modules tout réuni envoyé.xlsm
    273.7 KB · Affichages: 64
  • Modules tout réuni envoyé.xlsm
    273.7 KB · Affichages: 70

Yaloo

XLDnaute Barbatruc
Re : Import de données autre feuille excel

Bonjour loa,

Je n'ai pas tout compris à ton fichier (beaucoup de boutons) mais au lieu d'écrire

Pour le bouton 1 de la feuille Saisie de la demande
VB:
Sheets("Sécu des personnes fabModule 1").Range("A1:B65").Copy Sheets("Résultat Evaluation").Range("A1")
Sheets("Sécu des personnes fabModule 1").Range("B1:B65").Copy Sheets("Résultat Evaluation").Range("B1")

tu peux remplacer par
VB:
Feuil1.[A1:B65].Copy Feuil46.[A65536].End(xlUp)(2)

Feuil1 est le CodeName de ta feuille "Sécu des personnes fabModule 1" et Feuil46 celui de "Résultat Evaluation"

A te relire

Martial
 

Yaloo

XLDnaute Barbatruc
Re : Import de données autre feuille excel

Bonjour loa,

Pour les flèches, il faut :
- soit copier l'ensemble des données puis supprimer les lignes avec les flèches.
- soit ne copier que les lignes n'ayant pas de flèche.

Les 2 sont réalisables mais je n'ai pas le temps de le faire maintenant j'y regarde ce soir.

A+

Martial
 

Yaloo

XLDnaute Barbatruc
Re : Import de données autre feuille excel

Re,

Pour finir, j'avais assez de temps pour le faire, vois avec cette macro :

VB:
Private Sub CommandButton1_Click()
With Feuil46
  i = .[A65536].End(xlUp)(2).Row
  Feuil1.[A1:B65].Copy .Cells(i, 1)
  For j = .[A65536].End(xlUp)(2).Row To i Step -1
    If Left(.Cells(j, 2), 2) = "è " Then .Rows(j).EntireRow.Delete
  Next
End With
End Sub

A te relire

Martial

PS : si tu as plusieurs fois le même type de macro tu peux n'en faire qu'une seule. Dis-moi si besoin.
 

loa

XLDnaute Nouveau
Re : Import de données autre feuille excel

Merci beaucoup pour ta réponse.

En fait, j'avance en même temps que tu réponds à mes questions et mon travail évolue.
Finalement, je souhaite laisser un texte constant jusqu'à la ligne 32 de la feuille Résultat Evaluation. Cette partie de la feuille doit alors rester fixe.
Il faudrait donc que les autres parties s'insèrent à partir de la ligne 33, et cela sans les cellules comportant les flèches comme tu me l'as expliqué.

Merci encore
 

Yaloo

XLDnaute Barbatruc
Re : Import de données autre feuille excel

Bonjour loa,

Avec cette macro modifiée, il faut juste ajouter une ligne, voulant dire si i est inférieure à 33 alors i = 33

VB:
Private Sub CommandButton1_Click()
With Feuil46
   i = .[A65536].End(xlUp)(2).Row
   If i < 33 Then i = 33
   Feuil1.[A1:B65].Copy .Cells(i, 1)
   For j = .[A65536].End(xlUp)(2).Row To i Step -1
     If Left(.Cells(j, 2), 2) = "è " Then .Rows(j).EntireRow.Delete
   Next
End With
End Sub

A+

Martial
 

loa

XLDnaute Nouveau
Re : Import de données autre feuille excel

Ok, j'ai mis une image dans la feuil1
 

Pièces jointes

  • Modules tout réuni envoyé.xlsm
    276.9 KB · Affichages: 63
  • Modules tout réuni envoyé.xlsm
    276.9 KB · Affichages: 63
  • Modules tout réuni envoyé.xlsm
    276.9 KB · Affichages: 56

Yaloo

XLDnaute Barbatruc
Re : Import de données autre feuille excel

Re,

En prenant toutes les colonnes jusqu'à F :

VB:
Private Sub CommandButton1_Click()
With Feuil46
    i = .[A65536].End(xlUp)(2).Row
    If i < 33 Then i = 33
    Feuil1.[A1:F65].Copy .Cells(i, 1)
    For j = .[A65536].End(xlUp)(2).Row To i Step -1
      If Left(.Cells(j, 2), 2) = "è " Then .Rows(j).EntireRow.Delete
    Next
End With
End Sub

A+

Martial
 

loa

XLDnaute Nouveau
Re : Import de données autre feuille excel

Super, ça fonctionne encore une fois comme je le voulais!

Dernière petite question (pour l'instant!). J'ai ajouté un CommandButton qui permet de supprimer toutes les copies faites sur la feuille. Mais j'aimerais qu'en cliquant sur ce bouton, on ne puisse pas supprimer la feuille jusqu'à la ligne 32, cette partie doit restée bloquée et impossible de supprimer.

Je te mets le code que j'ai construits pour cela

Private Sub CommandButton2_Click()
If MsgBox("Etes-vous certain de vouloir supprimer le contenu de l'évaluation ?", vbYesNo, "Demande de confirmation") = vbYes Then
Sheets(Array("Résultat Evaluation")).Select
Cells.Select
Selection.Clear
MsgBox "Le contenu de l'évaluation a été effacé !"
End If

End Sub

Merci !
 

Yaloo

XLDnaute Barbatruc
Re : Import de données autre feuille excel

Bonjour loa,

Avec cette modification :

VB:
Private Sub CommandButton2_Click()
If MsgBox("Etes-vous certain de vouloir supprimer le contenu de l'évaluation ?", vbYesNo, "Demande de confirmation") = vbYes Then
    Sheets(Array("Résultat Evaluation")).Select
    'Cherche la dernière cellule de la colonne B
    i = Cells(Rows.Count, 2).End(xlUp).Row
    'Si i est inférieur à 23, alors on lui donne cette valeur
    If i < 23 Then i = 23
    'On supprime les lignes qui nous intéresse
    Rows("23:" & i).Clear
    MsgBox "Le contenu de l'évaluation a été effacé !"
    End If
End Sub

A+

Martial
 

Discussions similaires

Statistiques des forums

Discussions
312 240
Messages
2 086 514
Membres
103 239
dernier inscrit
wari