Selectionner toute les cellules. Ctrl+A

mawua

XLDnaute Occasionnel
Bonjour, le forum.
Comment faire Ctrl+A en VBA ?
C'est bête comme question mais est-il possible de formuler autrement que par

Range("A1:IV65536").select
Je ne sais pas trop pourquoi, ça me parait barbare comme methode.
Genre opération marteau-piqueur pour enfoncer un clou.

En outre lorsque je fais un Ctrl+A en enregistrement de Macro, j'obtiens

Cells.select
dans le module de la macro.
Or ce code ne fonctionne pas lorsque je l'intègre à un

With Thisworkbook.Sheet("xyz")
.Cells.Locked =true par exemple ou
Cells.Locked =true sans le point, même combat

Une petite idée?
 
Dernière édition:

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Selectionner toute les cellules. Ctrl+A

Re


D'accord avec Hervé

Mawua tu verras lorsque tu auras autant d'heure de VBA que certains du forum que le fait d'eviter les select à tout prix est vraiment indispensable.

Alors avant de jouer un peu la provoc, il est bien de se rappeler qu'ici c'est un forum de partage de connaissances et les habitués dont Hervé fait parti ont pour but non pas d'embéter ceux qui posent des questions même si elles peuvent nous paraître simples mais de partager ce que nous savons.

Alors merci de respecter les intervenants et tu profiteras pleinement de ce forum.

Bonne journée
 

mawua

XLDnaute Occasionnel
Re : Selectionner toute les cellules. Ctrl+A

Houpla, j'me suis encore mal fait comprendre.
Gnin gnin gnin, chez moi c'est pour l'agacement.
C'etait ironique.
Alors oui je sais que l'ironie ne passe pas trop à l'ecrit mais j'ai juste répliqué sur le même ton de la blague que Hervé. (Que j'ai trouvé très drôle).

Désolé pour le malentendu, encore une fois c'était pas du tout mon intention.
Je croyais qu'il y avait eu un soucis quelque post plus haut mais je croyais que c'était réglé et reparti bon enfant comme d'habitude sur le forum.

Ce serais très mal venu de ma part d'envoyer balader Hervé qui je le rappelle m'a aidé plusieurs fois et envers qui je suis très reconnaissant, comme envers tous ceux qui contribue à ce forum.
On s'est pas compris. Relisez les post précédents, pour moi il ne s'agissait que d'humour et d'autodérision.

A +
 
Dernière édition:

mawua

XLDnaute Occasionnel
Re : Selectionner toute les cellules. Ctrl+A

Pour reprendre le fil,

Je me suis rendu compte, à mes dépends qu'en effet le select etait une mauvaise idée. Justement sur cet exemple.
Car en essayant d'enchainer une méthode de selection sur plusieurs onglets les un après les autres et dans la même fonction, les résultats partait en vrille très vite (du genre trompage de feuille).
Il y a comme une incompatibilité entre le select, qui semble etre lié à la "fonction" activate (là c'est p'tet moi qui part en vrille, mais l'enregistreur de Macro d'Excel utilise systématiquement ce principe ?), et les boucle with notamment.

Ex.
With Thisworkbook.Sheets("xyz")
Cells.select
Selection.Locked =true
Range("A1").Locked =False
end with
With Thisworbook.Sheets("ijk")
Cells.select
Selection.Locked= true
Range("A1").Locked =False
end with

En faisant un truc comme ça je cours à la catastrophe, les cellules sont selectionées dans le même onglet quand il n'y a pas tout simplement des erreurs d'objet ou de propriétés d'objet.

Hervé: Pour la précision, c'est pile au moment où je m'en rendais compte de ça que tu as ecris
histoire de select de cellule (tres mauvaise idée d'ailleurs).
Ma réaction etait plutôt un avis de défaite que de la provoque. Bon passons.

J'ai remanié le code dans tout les sens et plusieurs fois pour arrivé à un resultat qui tourne sur une patte.
Je suis obligé de passer par des activations de cellules et les repartir dans plusieurs sub.

Bref, je crois que je vais revenir à un bon vieux
Range("A1:IV65536").

Tout ça pour ça...
Reste plus qu'à aller me coucher moi.
 
Dernière édition:

mawua

XLDnaute Occasionnel
Re : Selectionner toute les cellules. Ctrl+A

Re
jmps à dit:
Avant d'aller me coucher également (pas dans le même lit Mawua, je précise),
C'est important les précisions, si si !!

Pour repondre très sincerement à ta question, je ne sais plus.

J'ai tellement farfouillé dans le code aujourd'hui que je m'y suis perdu.
Au début j'essayai simplement de verrouiller des cellules et d'en laisser quelques une disponible. Ensuite je suis tombé sur ce
Cells.select que je ne connaissais pas et je me suis renseigné dessus. D'où ce fil.
Après je me suis battu contre VBE parce que quand tu verouille des cellules et que tu sais pas faire (comme c'est le cas pour moi) et que la macro plante. Quand tu relance la macro deux seconde après, les cellules sont vérouillées et ton code passe plus. J'ai bien du mettre deux heures à comprendre que le problème venait pas du code. Après j'ai suivi mon instinct (la rigolade !!!) et j'ai laissé" tomber le Cells.select

Je crois que je viens de faire le résumé de mon après midi, là. Ouf.
Je passerais p'tet un bout du code demain si ya quelqun qui veut bien se pencher sur mon cas.
 

mawua

XLDnaute Occasionnel
Re : Selectionner toute les cellules. Ctrl+A

Bonjour, le forum et ami du fil,

Ce que j'essaie de faire, c'est de Sauvegarder un classeur, avant la sauvegarde, certaine cellules non-verrouillée doivent être vérouillé et certaine autre doivent rester "disponible".
J'ai six onglets, il n'y a que la "page 1","page 2" et "page Certif" qui ont des cellules qui doivent rester dévérrouillées.

C'est un bouton en page un qui déclenche tout ça.

Private Sub CommandButton1_Click() 'Sous Feuil1
DeVerrouil
SaveSituation
Cumulenprecedant
NouveauNumero
ExceptVerrouil1
ExceptVerrouil2
ExceptVerrouil3
End Sub


Voici les macro qui echoue lors de la protection.
Sub ExceptVerrouil1() 'Dans le module 1
With ThisWorkbook.Sheets("Certificat pour paiement")
.Unprotect
.Select
.Cells.Locked = True
.Range ("C7,I16,D43") 'c'est là que le code ne fonctionne pas
.Protect
End With
ThisWorkbook.Sheets("page 3").Protect 'page 3 protégée
ThisWorkbook.Sheets("Detail").Protect 'page détail protégée
End Sub


Sub ExceptVerrouil2()
With ThisWorkbook.Sheets("page 2")
.Unprotect
.Select
.Cells.Locked = True
.Range("G27,G28,G40,G43,F14,F15,F16,F17,F18,F19,F22,B25,E25,D36").Locked = False
.Protect
End With
End Sub

Sub ExceptVerrouil3()
With Thiswrokbook.Sheets("page 1")
.Unprotect
.Select
.Cells.Locked = True
.Range("E30,C35,F35,C49").Locked = False
.Protect
End With
ThisWorkbook.Sheets("page 1").Range("E30").Activate
MsgBox ("La nouvelle page à été créée avec succès.Veuillez renseigner la date")
End Sub
 

Pièces jointes

  • Protect.zip
    30.8 KB · Affichages: 22
  • Protect.zip
    30.8 KB · Affichages: 18
  • Protect.zip
    30.8 KB · Affichages: 25
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Selectionner toute les cellules. Ctrl+A

mawua à dit:
BAAAAH OUUIII !

Mais ça n'excuse pas tout, faudra que j'apprenne à mieux me servir des Smiley la prochaine fois.

Pascal, j'en étais arrivé à la même conclusion.
Il faut selectionné avant et la méthode Cells.Select ne pose aucun problème.
Merci pour la confirmation.

Rideau.
Générique.
...
Salut à tous
eh alors ! Qu'est-ce que vous avez contre les Nantais !?!

Voici les macro qui echoue lors de la protection.
Sub ExceptVerrouil1() 'Dans le module 1
With ThisWorkbook.Sheets("Certificat pour paiement")
.Unprotect
.Select
.Cells.Locked = True
.Range ("C7,I16,D43")
.Protect
End With
ThisWorkbook.Sheets("page 3").Protect 'page 3 protégée
ThisWorkbook.Sheets("Detail").Protect 'page détail protégée
End Sub
j'chu complêtement d'accord avec Excel :p
c'est quoi cette instruction ???
Manque un bout de code: (.select, .locked = false ) quelque chose à faire quoi !
A+
 
Dernière édition:

mawua

XLDnaute Occasionnel
Re : Selectionner toute les cellules. Ctrl+A

Salut Gorfael
Gorfael à dit:
cells.locked = true, si t'as pas un protect derrière, ça va pas être très utile.
Surtout que c'est la valeur par défaut de cells

Heu ! Ben si je protège les feuilles !
Et sur chaque feuille(X3).
Si je passe par un cells.Locked)true, c'est parce que j'ai beaucoup de cellules dévérouillées auparavant, histoire de pas me trainer des longueur de ligne de code.
Je selectionne tout et je gère les exeptions.

Pour aller un peu plusloin dans les explications:
Le classeur ainsi vérouillé peut lui même générer le classeur suivant, c'est pour ça que je protège et déprotège les onglets chaque fois que la macro intervient sur ses cellules.
 

Gorfael

XLDnaute Barbatruc
Re : Selectionner toute les cellules. Ctrl+A

mawua à dit:
Salut Gorfael


Heu ! Ben si je protège les feuilles !
Et sur chaque feuille(X3).
Si je passe par un cells.Locked)true, c'est parce que j'ai beaucoup de cellules dévérouillées auparavant, histoire de pas me trainer des longueur de ligne de code.
Je selectionne tout et je gère les exeptions.

Pour aller un peu plusloin dans les explications:
Le classeur ainsi vérouillé peut lui même générer le classeur suivant, c'est pour ça que je protège et déprotège les onglets chaque fois que la macro intervient sur ses cellules.
Salut à tous
pour les malentendus :)
Pour ma réponse : j'ai pas vu qu'il y avais 2 pages de postes !
Sauf quand j'ai publié et donc, "vite fait", je télécharge le fichier et je rectifie ma réponse et... crotte, flûte, zut, grillé par la réponse à ma réponse pendant que je la modifiais

A+
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Selectionner toute les cellules. Ctrl+A

Re

Dis perso je viens de faire des essais et pas besoin de passer par des select

exemple :
Sheets("Feuil1").Cells.Locked = True
Sheets("Feuil1").Range("C2,E10,F19").Locked = False


sinon tu cherches à faire quoi avec cette ligne je ne vois pas ??
.Range ("C7,I16,D43")
 

mawua

XLDnaute Occasionnel
Re : Selectionner toute les cellules. Ctrl+A

Salut Pascal

sinon tu cherches à faire quoi avec cette ligne je ne vois pas ??
.Range ("C7,I16,D43")
Ben la même chose qu'au dessus. Deverrouiller ces cellules.
Quand j'ai changé la couleur du texte j'ai du effacer le
.Locked=false

Je vais refaire les tests chez moi selon tes indications.
D'après toi je peux activer la protection des cellules de tous les onglets dans une seule boucle with Thisworkbook
Ou bien je garde la structure actuelle en plusieurs fonctions ?

Gorfael à dit:
Sauf quand j'ai publié et donc, "vite fait", je télécharge le fichier et je rectifie ma réponse et... crotte, flûte, zut, grillé par la réponse à ma réponse pendant que je la modifiais
Héhéhé, la tornade du Re-Post.
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Selectionner toute les cellules. Ctrl+A

Re

Pour tous les problèmes de rpotect il suffit de protéger tes feuilles à l'ouverture dans le thisworkbook_open avec l'argument userinterfeceonly à true

comme cela tes macros peuvent manipuler tes cellules et tes feuilles sans avoir besoin de les déprotéger et reprotéger à chaque fois
 

mawua

XLDnaute Occasionnel
Re : Selectionner toute les cellules. Ctrl+A

Effectivement, ça va largement simplifier le code.
Du coup je n'ai qu'a me préoccuper du dévérrouillage des cellules concernées.
Plus de protect et unprotect
Merci Pascal pour cette astuce.
 

mawua

XLDnaute Occasionnel
Re : Selectionner toute les cellules. Ctrl+A

Re,
Ca plante à nouveau;
Voila le code reduit à une seule boucle dont je me sert.
Et il plante sur "les propriétés de l'objet range"
Sub ExceptVerrouil()

With ThisWorkbook
Sheets("page 2").Cells.Locked = True
Sheets("page 2").Range("G27,G28,G40,G43,F14,F15,F16,F17,F18,F19,F22,B25,E25,D36").Locked = False
Sheets("Certificat pour paiement").Cells.Locked = True
Sheets("Certificat pour paiement").Range("C7,I16,D43").Locked = False
Sheets("page 1").Cells.Locked = True
Sheets("page 1").Range("E30,C35,F35,C49").Locked = False
Sheets("page 1").Range("E30").Activate
MsgBox ("La nouvelle page à été créée avec succès.Veuillez renseigner la date")

End With
End Sub


Je crois que le problème vient des sauvegardes. Excel va plus vite sur certaine opération que d'autre.
Il faut que je le temporise ou un truc comme ça.
Je vais recommencer un nouveau fil avec un titre plus approprié.
 

lacorse33

XLDnaute Occasionnel
Re : Selectionner toute les cellules. Ctrl+A

Bonjour Mawua et le forum,

Pourrais-tu essayer ce qui suit ?

With ThisWorkbook
.Sheets("page 2").Activate
.Sheets("page 2").Cells.Locked = True
Set LaPlage = Application.Union(Range("G27"), Range("G28"), Range("G40"), Range("G43"), Range("F14"), Range("F15"), Range("F16"), Range("F17"), Range("F18"), Range("F19"), Range("F22"), Range("B25"), Range("E25"), Range("D36"))
LaPlage.Locked = False

.Sheets("Certificat pour paiement").Activate
.Sheets("Certificat pour paiement").Cells.Locked = True
Set LaPlage = Application.Union(Range("C7"), Range("I16"), Range("D43"))
LaPlage.Locked = False

.Sheets("page 1").Activate
.Sheets("page 1").Cells.Locked = True
Set LaPlage = Application.Union(Range("E30"), Range("C35"), Range("F35"), Range("C49"))
LaPlage.Locked = False

.Sheets("page 1").Range("E30").Activate
MsgBox ("La nouvelle page à été créée avec succès. Veuillez renseigner la date")
End With


Merci
@+
Béa
 

mawua

XLDnaute Occasionnel
Re : Selectionner toute les cellules. Ctrl+A

Bonjour Béa,
Merci d'avoir pris le temps de corriger tout ça.
Le code coule comme de l'eau, c'est super.
Merci.
Bien que je trouve toujours étrange de devoir passer par Activate, cela semble être le moyen le plus sur de ne pas générer d'erreur.
 

Statistiques des forums

Discussions
312 623
Messages
2 090 285
Membres
104 480
dernier inscrit
Gatsuken