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

Re,

Voici ta macro modifiée, si tu as des images dans ton entête il suffit de modifier leur nom afin d'éviter qu'elles ne s'appellent "Picture..."

VB:
Private Sub CommandButton2_Click()
Dim Imag As Object
If MsgBox("Etes-vous certain de vouloir supprimer le contenu de l'évaluation ?", vbYesNo, "Demande de confirmation") = vbYes Then
  Sheets("Résultat Evaluation").Select
  i = Cells(Rows.Count, 2).End(xlUp).Row
  If i < 23 Then i = 23
  Rows("23:" & i).Clear
  For Each Imag In ActiveSheet.Shapes
    If Imag.Name Like "*Picture*" Then
      Imag.Delete
    End If
  Next Imag
  MsgBox "Le contenu de l'évaluation a été effacé !"
End If
End Sub

A+

Martial
 

Yaloo

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

Re,

Comment ça : "cela ne fonctionne pas systématiquement" ?

La flèche se trouve-t-elle toujours en colonne B ?

Y-a-t-il un espace avant le è ?

Ca ne fonctionne pas systématiquement depuis que l'on intègre les images ? Donc les colonnes jusqu'à F ?

A+
 

loa

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

Alors, oui les flèches se trouvent bien toujours dans la colonne B et il n'y a pas d'espace avant le è.
Par contre je ne sais pas si cela correspond avec l'incorporation des images, c'est aléatoire selon les feuilles que je demande à copier.
Je l'ai remarqué après avoir incorporé les images effectivement mais ça le faisait peut-être déjà avant.
 

loa

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

Bonjour Yaloo,

Ok, voilà un exemple en PJ.
Sur la feuille de "résultat Evaluation", on voit apparaitre des flèches (en demandant de copier sur cette feuille les deux feuilles que j'ai laissé sur le fichier).

Merci A+
 

Pièces jointes

  • Modules tout réuni envoyé.xlsm
    236.1 KB · Affichages: 25
  • Modules tout réuni envoyé.xlsm
    236.1 KB · Affichages: 24
  • Modules tout réuni envoyé.xlsm
    236.1 KB · Affichages: 20

Yaloo

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

Bonjour loa,

En fait, il n'y avait pas grand chose, lorsque l'on prenait la dernière cellule vide, on la prenait dans la colonne A alors qu'il fallait prendre dans la colonne B.

Comme tu as beaucoup de macros identiques (il n'y a que la feuille copiée qui diffère) on peux écrire les macros comme ceci :

VB:
Private Sub Résultat(Ws As Worksheet)
  With Feuil46
    i = .[A65536].End(xlUp)(2).Row
    If i < 35 Then i = 35
    Ws.[A1:F74].Copy .Cells(i, 1)
    For j = .[B65536].End(xlUp)(2).Row To i Step -1
      If Left(.Cells(j, 2), 2) = "è " Then .Rows(j).EntireRow.Delete
    Next
  End With
End Sub
Private Sub CommandButton1_Click()
  Résultat Feuil1
End Sub
Private Sub CommandButton10_Click()
  Résultat Feuil12
End Sub
Private Sub CommandButton11_Click()
  Résultat Feuil13
End Sub
'etc...

Le nom de la feuille est retransmis (Ws as worksheet), comme ça, lorsque tu changes un truc dans la macro, tu n'es pas obligé de le faire pour tes 24 macros.

Dans le fichier ci-dessous, je t'ai mis les macros modifées.

A+

Martial
 

Pièces jointes

  • Modules tout réuni envoyé.xlsm
    235.6 KB · Affichages: 23
  • Modules tout réuni envoyé.xlsm
    235.6 KB · Affichages: 25
  • Modules tout réuni envoyé.xlsm
    235.6 KB · Affichages: 26

loa

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

Ok, super, ça avance, ça avance!!

J'aimerais que tu m'expliques le code en question avec les significations des termes pour être un peu plus indépendante si je veux faire des modifs (là par exemple je suis bloquée par le simple fait de laisser une ligne vide entre chaque incorporation de feuille...!).

Merci encore
 

Yaloo

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

Re,

Voici la macro commentée, c'est assez compliqué à argumenter, si tu ne comprends pas quelque chose fais-le moi savoir.

VB:
Private Sub Résultat(Ws As Worksheet)
  'Avec la Fuille "Résultat Evaluation", dont le CodeName est Feuil46 à gauche de "Résultat Evaluation"
  With Feuil46
    'On cherche la dernière ligne vide,
    'Lorsque l'on met un . devant [ ou Cells( ce qui suit est attribué à la Feuil46 (définit plus haut)
    'Donc on cherche la dernière ligne de la colonne B, on part de la dernière ligne de la feuille (65536 est le nb de ligne dans un fichier xls)
    'puis on remonte jusqu'à trouver la première ligne pleine, d'où le xlUp, row nous donne le N° de ligne
    '(2) signifie que l'on veut celle qui est juste dessous (donc la première ligne vide)
    i = .[B65536].End(xlUp)(2).Row
    'Puisque tu as des informations avant ta ligne 35,
    'Si i est inférieur à 35 alors on lui donnes cette valeur, pour copier après la ligne 35
    If i < 35 Then i = 35
    'Pour la feuille attribuée à cette macro, admettons Feuil1 (c'est le Ws dans Private Sub Résultat(Ws as Worksheet)
    'On copie la plage A1 à F74 de Feuil1 dans la Feuil46 (puisqu'on a le . )
    'dans la colonne 1 (donc A) et la dernière cellule vide trouvée auparavant i
    Ws.[A1:F74].Copy .Cells(i, 1) 'La plage est copiée
    'Suppression des flèches
    'Avec .[B65536].End(xlUp)(2).Row , on cherche la dernière ligne vide de la colonne B de la Feuil46
    'On va attribuée à j toutes les lignes de la dernière cellule trouvée en remontant (step -1)
    'jusqu'à la dernière cellule trouvée auparavant (i)
    'Par exemple, c'est la 2ème fois que l'on clique sur cette macro, on a donc 35 + 2 x 74 lignes donc 183
    'i = 109 , dernière ligne 183 on va donc remonter toutes les lignes, de 183 à 109, pour voir si la flèche existe
    For j = .[B65536].End(xlUp)(2).Row To i Step -1
      'Pour toutes les valeurs de j de la colonne B on regarde les 2 premières valeurs
      'Si elles sont égalent à "è " (ça correspond à la flèche en Wingdings) alors on supprime la ligne entière
      If Left(.Cells(j, 2), 2) = "è " Then .Rows(j).EntireRow.Delete
    'On passe à j suivant toujours en remontant
    Next
  End With
End Sub

Deux trucs pour apprendre :
- Lorsque tu te mets sur un mot que tu ne comprends pas, tu fais F1 (c'est l'aide) même si l'on ne saisie pas tout, ça arrive à aider de temps en temps.
- Tu peux lancer les macros en "pas à pas", tu te mets dans une macro puis tu fais F8, la première ligne se met en jaune, à chaque F8 tu descends d'une ligne.

N'hésites à poser des questions.

A+

Martial
 

Yaloo

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

Re,

On ne peut faire qu'une seule macro pour tous les boutons. Il faut, par contre, pour cela remplacer tous tes Bouton ActiveX par des boutons normaux ou des Formes rectangulaires. Le truc c'est de récupérer le N° du bouton ou du rectangle.

Vois le fichier ci-joint, si ça t'intéresses.

A+

Martial
 

Pièces jointes

  • Modules tout réuni envoyé V1.1.xlsm
    136 KB · Affichages: 22

Yaloo

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

Re,

Avec l'aide de l'excellent Pierrot (dans ce post) je te propose un nouveau fichier.

Il suffit de mettre le N° de feuille des CodeName, par exemple : pour la feuille "Sécu des personnes fabModule 1" c'est la Feuil1; pour la feuille "Sécu des aliments fabModule 2" c'est la Feuil17 au niveau du N° du bouton correspondant.

feuille "Sécu des personnes fabModule 1" = Feuil1, donc 1 = CommandButton1
feuille "Sécu des aliments fabModule 2" = Feuil17, donc 17 = CommandButton17
etc...

J'espère que cela va t'aider en te simplifiant la tâche.

A+

Martial
 

Pièces jointes

  • Modules tout réuni envoyé V1.12.xlsm
    236.9 KB · Affichages: 23
Dernière édition:

loa

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

Ok merci pour tes derniers commentaires et dsl de répondre si tard!

Je cherche maintenant à avoir une macro qui me permette d'enregistrer la feuille de résultat dans un autre fichier excel.
En fait, dès que tu cliquerais sur un commandbutton, ça t'ouvrirais une msgbox te demandant comment tu veux intituler le fichier sous lequel tu veux enregistrer la feuille de résultat et ensuite ça te créerait donc un nouveau fichier qui comporterait la feuille de résultat que tu viens de construire, dans un dossier donné.

Je ne sais pas du tout si c'est possible, mais je suis sure que tu pourras m'éclairer!

Merci
 

Yaloo

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

Bonsoir loa,

Voici ton fichier avec une marco et son bouton dans la feuille Résultat.

A+

Martial
 

Pièces jointes

  • Modules tout réuni envoyé V1.13.xlsm
    238.2 KB · Affichages: 24

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 457
Membres
103 219
dernier inscrit
Akyrah