Ouvrir un fichier Excel et copier des données

Bonjour à tous,

J'essaie de demander à un code d'ouvrir un fichier spécifique (ci joint PC Avignon), de copier certaines données et de venir les coller à un endroit.

Pour ouvrir le fichier j'ai trouvé ce code :

Sub Ouvre()

Nom_Fichier = Application.GetOpenFilename(PC_Avignon.xls)

If Nom_Fichier <> False Then

Workbooks.Open Filename:=PC_Avignon

End If

End Sub

Je ne suis pas certain d'avoir bien renseigné le nom du fichier car j'ai une erreur 9 (n'appartient pas à la sélection).

Je me suis amusé ensuite à faire le code manuellement pour recopier et coller les données qui m'intéressent. Mais du coup j'ai un code très long et je ne sais pas comment le faire fonctionner avec le premier code qui demande l'ouverture du fichier.

Et il me faudrait ensuite pouvoir fermer le premier fichier ouvert.

Quelqu'un peut m'aider ?

Bonne journée,

Fabrice

11pc-avignon.xlsx (20.28 Ko)

Bonjour,

Voici ce que tu devrais faire

Public Wbk As Workbook, Sht As Worksheet

Sub Ouvre()
  Dim sNomFichier As String
  sNomFichier = Application.GetOpenFilename("PC_Avignon (*.xlsx), *.xlsx")
  If sNomFichier <> False Then
    ' Définir l'objet classeur en l'ouvrant
    Set Wbk = Workbooks.Open(Filename:=sNomFichier)
    ' Définir l'objet feuille du classeur ouvert
    Set Sht = Wbk.Sheets(1)
  End If
End Sub

Sub Maj_PC_Avignon()
'
' Maj_PC_Avignon Macro

  ' Eviter les Select
  Sht.Range("B6:C15").Copy
 ThisWorkbook.ActiveSheet.Range("B4").PasteSpecial Paste:=xlPasteValues, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  Sht.Range("B17:C26").Copy
  ThisWorkbook.ActiveSheet.Range("B15").PasteSpecial Paste:=xlPasteValues, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  ' Etc...
  'On peut faire aussi une boucle
 

Avec ce code, pas besoin d'une procédure par feuille

A+

Merci pour ton aide Bruno,

En recopiant le code j'ai un message d'erreur : erreur d'exécution 91 - Variable d'objet ou variable de bloc with non définie.

Quand tu dis qu'on peut faire une boucle ou qu'on n'a pas besoin d'une procédure par feuille, qu'est-ce que tu sous-entends ?

Fabrice

Re,

Une boucle t'éviterait d'avoir à répéter le code

 Sht.Range("B6:C15").Copy
 ThisWorkbook.ActiveSheet.Range("B4").PasteSpecial Paste:=xlPasteValues, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False

En modifiant l'adresse de copie et de destination

Le fait de mettre

 ThisWorkbook.ActiveSheet

Te permet d'appeler la procédure de n'importe qu'elle feuille, tant qu'elle sont identiques en nombre de lignes et colonnes

Ok je comprends le principe.

Par contre j'ai toujours le message d'erreur : erreur d'exécution 91 - Variable d'objet ou variable de bloc with non définie.

Quelqu'un sait il pourquoi ?

Re,

Sur quelle ligne ça bloque !?

Sur celle-là :

Sht.Range("B6:C15").Copy

Re,

Donc à mon avis tu n'as pas copié tel quel le code donné.

Ou tu essayes de lancer la copie sans ouverture du fichier.

Le fichier n'est sensé s'ouvrir tout seul avec ce code ?

Sub Ouvre()

Dim sNomFichier As String

sNomFichier = Application.GetOpenFilename("PC_Avignon (*.xlsx), *.xlsx")

If sNomFichier <> False Then

' Définir l'objet classeur en l'ouvrant

Set Wbk = Workbooks.Open(Filename:=sNomFichier)

' Définir l'objet feuille du classeur ouvert

Set Sht = Wbk.Sheets(1)

End If

End Sub

Re,

Non cette instruction demande de sélectionner le fichier

bonjour

salut Bruno

utilisons Excel et ses nouvelles fonctions (10 ans tout de même ! )

menu Données/obtenir

et hop

pas de VBA

amitiés

Salut Jmd

bonjour

salut Bruno

utilisons Excel et ses nouvelles fonctions (10 ans tout de même ! )

menu Données/obtenir

et hop

pas de VBA

amitiés

Oui, je suis d'accord avec toi

sauf quand le fichier peut changer de place ou changer de nom

Et moi... J'ADORE le VBA

oui,

moi aussi j'adore les vieilles voitures, mais je n'aide personne à réparer sa Clio de 2017 selon les méthodes applicables aux 2CV de 1963

je ne conseille jamais en fonction de mes préférences, mais selon l'efficacité et la fiabilité (sauf éventuellement si la question posée est du pur jeu ou du hobby)

trop sérieux

note : quand un fichier change de lieu ou de nom, il est bien plus facile de modifier PQuery que VBA (il y a une boîte de dialogue toute faite pour ça)

amitiés

jmd, est-ce que tu connais de très bons tutos pour apprendre Power Query ?

j'ai acheté ce livre

Power Query et le langage M - Faciliter la préparation, lenrichissement et le traitement des données

sur le net tu trouves aussi des vidéos

je n'ai pas de tuto préféré

je picore sur le web en fonction de mes difficultés

amitiés

merci

Re,

moi aussi j'adore les vieilles voitures, mais je n'aide personne à réparer sa Clio de 2017 selon les méthodes applicables aux 2CV de 1963

Je pense que la comparaison est un peu excessive, non

Mais on peut continuer sur ce genre de comparaison,

Hier, on pouvait réparer soit même sa voiture, aujourd'hui nous sommes obligé de passer par des concession peu scrupuleuse

je ne conseille jamais en fonction de mes préférences, mais selon l'efficacité et la fiabilité (sauf éventuellement si la question posée est du pur jeu ou du hobby)

Moi non plus, mais je respecte la demande des personnes et surtout leur moyen et qui souvent ne connaissent pas les dernières technologies ou n'en n'ont tout simplement pas besoin si cela peu marcher autrement.

Je sais que tu es anti-vba et c'est bien dommage à mes yeux

O365 est une grosse daube mais tu as raison travaille dans le sens de Microsoft qui loue à un prix non négligeable cette M*

Rechercher des sujets similaires à "ouvrir fichier copier donnees"