Macro qui ne s applique pas aux onglets selectionnés
Résolu/Fermé
CHARLYJACK
Messages postés
353
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2023
-
Modifié par jordane45 le 23/02/2016 à 20:05
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 - 24 févr. 2016 à 13:45
CHARLYJACK Messages postés 353 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 16 mai 2023 - 24 févr. 2016 à 13:45
A voir également:
- Macro qui ne s applique pas aux onglets selectionnés
- Restaurer onglets chrome - Guide
- Macro logiciel - Télécharger - Organisation
- Macro word - Guide
- Macro recorder - Télécharger - Confidentialité
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
3 réponses
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
4 634
Modifié par jordane45 le 23/02/2016 à 20:40
Modifié par jordane45 le 23/02/2016 à 20:40
Bonjour,
Déjà.. tu as un souci sur ton IF
En gros si la feuille n'est pas Feuil1 ..... ou Feuil2 ... (donc si je suis la feuille1.. je ne suis pas la deux.. et inversement....)......
A mon avis ... il faudrait un AND à la place du OR.
Ensuite... à mon avis... ceci
Devrait se trouver DANS ta boucle....
Penses également à préfixer les RANGE(...) ... par la FEUILLE sur laquelle doit s'appliquer la "selection".
Par exemple :
Bon .. après... je ne sais pas ce que tu veux réellement faire avec ta macro... et il est conseillé d'éviter de faire des copier/coller ....
Par exemple tu pourrais, si mes souvenirs sont bons, remplacer le code ci-dessus par :
Cordialement,
Jordane
Déjà.. tu as un souci sur ton IF
If ws.Name <> "Feuil1" Or ws.Name <> "Feuil2" Then
En gros si la feuille n'est pas Feuil1 ..... ou Feuil2 ... (donc si je suis la feuille1.. je ne suis pas la deux.. et inversement....)......
A mon avis ... il faudrait un AND à la place du OR.
If ws.Name <> "Feuil1" AND ws.Name <> "Feuil2" Then
Ensuite... à mon avis... ceci
Mois = Range("P8").Value
Devrait se trouver DANS ta boucle....
Penses également à préfixer les RANGE(...) ... par la FEUILLE sur laquelle doit s'appliquer la "selection".
Par exemple :
Ws.Range("P9:P595").Select selection.Copy Sheets("Feuil1").Range("BA9").Select selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Bon .. après... je ne sais pas ce que tu veux réellement faire avec ta macro... et il est conseillé d'éviter de faire des copier/coller ....
Par exemple tu pourrais, si mes souvenirs sont bons, remplacer le code ci-dessus par :
Sheets("Feuil1").Range("BA9:BA595").value = Ws.Range("P9:P595").value
Cordialement,
Jordane
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
4 634
23 févr. 2016 à 22:18
23 févr. 2016 à 22:18
je souhaite coller la colonne P
en BA pour janvier
en BB pour février
en BC pour mars ....
Le mois est en P8
La colonne P de quelle feuille ?
Coller en BA BB BC... de quelle feuille ?
Le mois est en P8 ..... dans QUELLE FEUILLE ???
Avant de parler de boucle... commence par nous expliquer EXACTEMENT comment doit fonctionner ta macro (en précisant ce que viennent faire les différents onglets ! )
Tu peux également (donc en plus de l'explication demandée ci-dessus...) nous mettre un fichier Exemple à disposition via le site : cijoint.com par exemple.
https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
CHARLYJACK
Messages postés
353
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2023
1
23 févr. 2016 à 23:33
23 févr. 2016 à 23:33
Bonsoir,
j'ai mis un exemple d onglet sous le chemin suivant :
http://www.cjoint.com/c/FBxwCxyzVgP
En fait j ai une trentaine d onglets dans ce style, et 2 ou 3 qui sont des consolidations.
J aimerais que chaque mois et que pour chacun des onglet de ce type
la colonne P soit Copier Coller valeur en BA, puis en BB le mois suivant ....
le fait de coller la colonne P chaque mois me permettra d avoir un historique sur la même page et de déterminer la consommation mensuelle .
merci de ton aide
j'ai mis un exemple d onglet sous le chemin suivant :
http://www.cjoint.com/c/FBxwCxyzVgP
En fait j ai une trentaine d onglets dans ce style, et 2 ou 3 qui sont des consolidations.
J aimerais que chaque mois et que pour chacun des onglet de ce type
la colonne P soit Copier Coller valeur en BA, puis en BB le mois suivant ....
le fait de coller la colonne P chaque mois me permettra d avoir un historique sur la même page et de déterminer la consommation mensuelle .
merci de ton aide
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
4 634
23 févr. 2016 à 23:57
23 févr. 2016 à 23:57
Essayes ça :
Sub test() Dim sh As Worksheet Dim valCelP8 As String Dim ColCopie As Long Dim RngToSave As Range Dim RngSource As Range For Each sh In ThisWorkbook.Worksheets sh.Activate If sh.Name <> "Feuil1" And sh.Name <> "Feuil2" Then 'Plage de cellules à sauvegardes Set RngSource = sh.Range("P9:P595") 'Valeur de la cellule P8 valCelP8 = sh.Range("P8").Value 'On regarde dans quel cas on se trouve : Select Case valCelP8 Case "Jan" ColCopie = 53 'Ba Case "Fev" ColCopie = 54 'Bb Case Else Debug.Print "Feuille : " & sh.Name & "-> Valeur inconnue" Resume Next End Select 'On définie la plage où sauvegarder Set RngToSave = sh.Range(Cells(9, ColCopie), Cells(595, ColCopie)) 'Sauvegarde des valeurs Debug.Print "Feuille : " & sh.Name & "-> Copie des valeurs dans la colonne " & ColCopie RngSource.Copy Destination:=RngToSave End If Next End Sub
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
4 634
>
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
23 févr. 2016 à 23:58
23 févr. 2016 à 23:58
Bien entendu.. il faut compléter le SELECT CASE avec les autres mois..
CHARLYJACK
Messages postés
353
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2023
1
>
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
24 févr. 2016 à 09:34
24 févr. 2016 à 09:34
Bonjour Jordane45,
Le copier coller ne s effectue toujours pas.
J avais un problème sur Resume next il fallait noter On error Resume next.
Quand je décompose la macro en F8 elle passe bien sur l ensemble des feuilles.
Par contre sur cette ligne:
RngSource.Copy Destination:=RngToSave
Quelque soit la page le Rngtosave = Noting.
En tout cas merci de ton aide
Le copier coller ne s effectue toujours pas.
J avais un problème sur Resume next il fallait noter On error Resume next.
Quand je décompose la macro en F8 elle passe bien sur l ensemble des feuilles.
Par contre sur cette ligne:
RngSource.Copy Destination:=RngToSave
Quelque soit la page le Rngtosave = Noting.
En tout cas merci de ton aide
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
4 634
>
CHARLYJACK
Messages postés
353
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2023
24 févr. 2016 à 09:43
24 févr. 2016 à 09:43
Tu peux me montrer le code modifié ?
Tu as bien complété le SELECT CASE ?
Quand tu es en mode pas à pas (F8) que vaut la variable ColCopie ?
Tu as bien complété le SELECT CASE ?
Quand tu es en mode pas à pas (F8) que vaut la variable ColCopie ?
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
4 634
24 févr. 2016 à 10:00
24 févr. 2016 à 10:00
1 - **** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
2 - Essayes ce code :
et dis moi ce que ça te mets dans la fenêtre d'exécution.
Vérifies également le contenu de la variable : valCelP8 ... est-ce que tu y retrouves les différents mois tels que décris dans le SELECT CASE ?
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
2 - Essayes ce code :
Sub test() Dim sh As Worksheet Dim valCelP8 As String Dim ColCopie As Long Dim RngToSave As Range Dim RngSource As Range For Each sh In ThisWorkbook.Worksheets sh.Activate If sh.Name <> "Feuil1" And sh.Name <> "Feuil2" And sh.Name <> "Feuil3" And sh.Name <> "Feuil40" And sh.Name <> "Feuil41" And sh.Name <> "Feuil68" And sh.Name <> "Feuil71" And sh.Name <> "Feuil75" And sh.Name <> "Feuil86" Then 'Plage de cellules à sauvegardes Set RngSource = sh.Range("P9:P595") 'Valeur de la cellule P8 valCelP8 = sh.Range("P8").Value 'On regarde dans quel cas on se trouve : Select Case valCelP8 Case "Jan" ColCopie = 53 'Ba Case "Fev" ColCopie = 54 'Bb Case "Mar" ColCopie = 55 'Bc Case "Apr" ColCopie = 56 'Bd Case "May" ColCopie = 57 'Be Case "Jun" ColCopie = 58 'Bf Case "Jul" ColCopie = 59 'Ba Case "Aug" ColCopie = 60 'Bb Case "Sep" ColCopie = 61 'Bc Case "Oct" ColCopie = 62 'Bd Case "Nov" ColCopie = 63 'Be Case "Dec" ColCopie = 64 'Bf Case Else Debug.Print "Feuille : " & sh.Name & "-> Valeur inconnue" ColCopie = 0 End Select If ColCopie <> 0 Then 'On définie la plage où sauvegarder Set RngToSave = sh.Range(Cells(9, ColCopie), Cells(595, ColCopie)) 'Sauvegarde des valeurs Debug.Print "Feuille : " & sh.Name & "-> Copie des valeurs dans la colonne " & ColCopie RngSource.Copy Destination:=RngToSave Else Debug.Print "Feuille : " & sh.Name & " -> ColCopie =" & ColCopie & " /!\ Aucune valeur ne correspond : " & valCelP8 End If End If Next End Sub
et dis moi ce que ça te mets dans la fenêtre d'exécution.
Vérifies également le contenu de la variable : valCelP8 ... est-ce que tu y retrouves les différents mois tels que décris dans le SELECT CASE ?
CHARLYJACK
Messages postés
353
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2023
1
24 févr. 2016 à 10:52
24 févr. 2016 à 10:52
Le blocage venait effectivement de la description des mois,
j'ai rectifié ça fonctionne,
mon seul et dernier problème c'est que la colonne P n'est pas copiée en valeur,
donc pour chaque onglet ça me demande si il doit rafraichir les liens et en plus ça risque de fausser le résultat.
merci beaucoup en tout cas
j'ai rectifié ça fonctionne,
mon seul et dernier problème c'est que la colonne P n'est pas copiée en valeur,
donc pour chaque onglet ça me demande si il doit rafraichir les liens et en plus ça risque de fausser le résultat.
merci beaucoup en tout cas
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
4 634
>
CHARLYJACK
Messages postés
353
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2023
Modifié par jordane45 le 24/02/2016 à 11:00
Modifié par jordane45 le 24/02/2016 à 11:00
Si tu veux copier uniquement les valeurs
essayes ça :
essayes ça :
' A la place de : RngSource.Copy Destination:=RngToSave ' mettre : RngSource.Copy RngToSave.PasteSpecial xlPasteValues
CHARLYJACK
Messages postés
353
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2023
1
>
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
24 févr. 2016 à 11:07
24 févr. 2016 à 11:07
Un grand merci à toi jordane45,
ça fonctionne super bien maintenant.
Je n'aurais jamais réussi sans toi !
Le vba je manipule un peu, je copie, je modifie mais je n arrive pas à realiser une programmation.
Merci beaucoup pour ton aide
bonne journée
ça fonctionne super bien maintenant.
Je n'aurais jamais réussi sans toi !
Le vba je manipule un peu, je copie, je modifie mais je n arrive pas à realiser une programmation.
Merci beaucoup pour ton aide
bonne journée
CHARLYJACK
Messages postés
353
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2023
1
>
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
24 févr. 2016 à 12:15
24 févr. 2016 à 12:15
Bonjour,
après vérification cette partie ne fonctionne pas.
La macro s’exécute pour toutes les feuilles.
Je ne comprends pas pourquoi.
après vérification cette partie ne fonctionne pas.
La macro s’exécute pour toutes les feuilles.
Je ne comprends pas pourquoi.
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
4 634
>
CHARLYJACK
Messages postés
353
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2023
24 févr. 2016 à 12:18
24 févr. 2016 à 12:18
Quelle partie ??
Quelles feuilles ne devraient pas avoir cette macro ??
Merci d'être plus précis.
Quelles feuilles ne devraient pas avoir cette macro ??
Merci d'être plus précis.
23 févr. 2016 à 20:40
23 févr. 2016 à 22:04
Malheureusement je ne trouve pas de solution,
je souhaite coller la colonne P
en BA pour janvier
en BB pour février
en BC pour mars ....
Le mois est en P8
Je veux le faire pour l ensemble des feuilles du classeur sauf 4 ou 5.
La boucle ne fonctionne pas même avec une manipulation plus simple
Je continue de chercher et vous tiens au courant !
Encore merci pour le coup de main