Excel vba copier des feuilles
Résolu
Beeloobop
Messages postés
63
Date d'inscription
Statut
Membre
Dernière intervention
-
Beeloobop Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
Beeloobop Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai créé une macro qui me permet de compiler les données de différentes feuilles dans une seule et même autre feuille "1 Base de données". La macro fonctionne bien sur les deux premières feuilles et plante. Elle ne copie plus les données des feuilles suivantes.
Voici le code que j'ai utilisé :
Dim feuille As Worksheet
For Each feuille In Worksheets
If feuille.Name <> "0 Utilisateur" Then
If feuille.Name <> "1 Base de données" Then
If feuille.Name <> "2 Modèle" Then
If feuille.Name <> "3Outils" Then
feuille.Select
Dim Lg%
Lg = Range("H65536").End(3).Row
Range("A7:H" & Lg).Copy
Sheets("1 Base de données").Select
Dim Lg2%
Lg2 = Range("A65536").End(3).Row
Range("A" & Lg2 + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End If
End If
End If
Next feuille
vba a l'air d'avoir un soucis avec le "feuille.Select". Voici ce qu'il me dit : la méthode Select de l'objet worksheet a échoué. Pourquoi ça marcherait sur 2 feuilles et pouf! la 3e ça plante?
Merci pour votre aide!!
Beeloobop
J'ai créé une macro qui me permet de compiler les données de différentes feuilles dans une seule et même autre feuille "1 Base de données". La macro fonctionne bien sur les deux premières feuilles et plante. Elle ne copie plus les données des feuilles suivantes.
Voici le code que j'ai utilisé :
Dim feuille As Worksheet
For Each feuille In Worksheets
If feuille.Name <> "0 Utilisateur" Then
If feuille.Name <> "1 Base de données" Then
If feuille.Name <> "2 Modèle" Then
If feuille.Name <> "3Outils" Then
feuille.Select
Dim Lg%
Lg = Range("H65536").End(3).Row
Range("A7:H" & Lg).Copy
Sheets("1 Base de données").Select
Dim Lg2%
Lg2 = Range("A65536").End(3).Row
Range("A" & Lg2 + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End If
End If
End If
Next feuille
vba a l'air d'avoir un soucis avec le "feuille.Select". Voici ce qu'il me dit : la méthode Select de l'objet worksheet a échoué. Pourquoi ça marcherait sur 2 feuilles et pouf! la 3e ça plante?
Merci pour votre aide!!
Beeloobop
A voir également:
- Excel - vba copier feuille et renommer
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Renommer des fichiers en masse - Guide
- Si et excel - Guide
1 réponse
bonjour
En évitant de faire les "select" de données, tu devrais être plus rapide.
En utilisant "Select Case" c'est plus simple pour paramétrer les feuilles non concernées.
Lorsque tu définis tes variables lignes pense à mettre "long" car integer est limité à 32 767.
Je te propose de modifier ainsi et de voir si cela fonctionne chez toi :
En évitant de faire les "select" de données, tu devrais être plus rapide.
En utilisant "Select Case" c'est plus simple pour paramétrer les feuilles non concernées.
Lorsque tu définis tes variables lignes pense à mettre "long" car integer est limité à 32 767.
Je te propose de modifier ainsi et de voir si cela fonctionne chez toi :
Public Sub copie() Dim feuille As Worksheet, Lg As Long, Lg2 As Long For Each feuille In Worksheets Select Case feuille.Name Case "0 Utilisateur", "1 Base de données", "2 Modèle", "3Outils" Case Else Lg = feuille.Range("H65536").End(3).Row Lg2 = Sheets("1 Base de données").Range("A65536").End(3).Row + 1 feuille.Range("A7:H" & Lg).Copy Sheets("1 Base de données").Range("A" & Lg2).PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Select Next feuille End Sub
ça fonctionne parfaitement et c'est vrai que ton écriture allège le code :)
Mais j'aime comprendre! Pourrais-tu me dire à quoi sert "Case" ? ça donne quoi comme information? ça effectue quoi comme action?
Merci!