Feuille.Activate ou Feuille.Select

roro69

XLDnaute Impliqué
Bonsoir à tous;
C'est une question surement un peu bizzare mais si quelqu'un pourrait m'expliquer la différence entre
Feuille.Activate ou Feuille.Select
Merci
 

skoobi

XLDnaute Barbatruc
Re : Feuille.Activate ou Feuille.Select

Bonsoir,

Aucune question n'est bizarre quand on cherche à comprendre ;).
"Activate" rend active la feuille mentionnée alors que "Select" permet de sélectionner une ou plusieurs feuilles ce qui n'est pas le cas de "Activate".
Ceci est aussi valable pour l'objet Range (cellule).
Par exemple:
Code:
 sheets.Select
permet de sélectionner toutes les feuilles.

C'est plus compréhensible avec les cellules.
Quand tu sélectionnes plusieurs cellules:
Code:
 Range("A1:B10").Select
c'est la cellule A1 qui est active "Activate", celle qui reste "blanche".

Edit: salut Robert, arfff qqs secondes d'avances sur toi....
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Feuille.Activate ou Feuille.Select

Bonsoir Roro, bonsoir le forum,

Tu peux sélectionner plusieurs onglets mais un seul sera actif (par défaut le premier sélectionné). Le code ci-dessous sélectionne les onglets Feuil1, Feuil2 et Feuil3 et active l'onglet Feuil2.
Code:
Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
Sheets("Feuil2").Activate

Par contre quand il s'agit d'un seul onglet, Feuil1.Select ou Feuil1.Activate ont exactement le même effet.

Il en va de même avec une plage de cellules...
 

roro69

XLDnaute Impliqué
Re : Feuille.Activate ou Feuille.Select

Merci skoobi et Robert;
Ici pas besoin de livre; vous etes vraiment sympatique jusque dans vos réponses;elle sont complète et compréhensible.
Vraiment merci beaucoup.
Le petit cuistot que je suis est impressionné chaque jour par tant de savoir de vous tous.
 

skoobi

XLDnaute Barbatruc
Re : Feuille.Activate ou Feuille.Select

Re,

petite astuce (si tu ne la connais pas) pour en savoir plus sur une fonction propriété etc...
clique sur le mot puis appuie sur F1, l'aide concernant ce dernier s'affiche.;)
 

abtony

XLDnaute Impliqué
Re : Feuille.Activate ou Feuille.Select

Merci skoobi et Robert;
Ici pas besoin de livre; vous etes vraiment sympatique jusque dans vos réponses;elle sont complète et compréhensible.
Vraiment merci beaucoup.
Le petit cuistot que je suis est impressionné chaque jour par tant de savoir de vous tous.

Bonsoir tout le monde !

je partage pleinement ton avis roro69, ils sont épatant.

Bonne soirée
 

ftho

XLDnaute Occasionnel
Re : Feuille.Activate ou Feuille.Select

Bonsoir tlm,

Si je peux me permettre un petit commentaire sur les "Select", ils sont souvent utilisés inutilement (suite à l'enregistreur de macro qui enregistre tous les mouvements de la souris) ce qui a pour effet d'une part de ralentir le processus et d'autre part de transformer l'écran en sapin de Noël.

Par exemple pour copier la cellule A1 de la feuille 2 vers la cellule A1 de la feuille 3, on voit régulièrement :
Code:
Sheets(2).Select
Range("A1").Select
Selection.Copy
Sheets(3).Select
Range("A1").Select
ActiveSheet.Paste

alors qu'il suffirait d'écrire
Code:
Sheets(2).Range("A1").Copy Sheets(3).Range("A1")

ou encore plus simple
Code:
Sheets(3).[A1] = Sheets(2).[A1]
 

Spitnolan08

XLDnaute Barbatruc
Re : Feuille.Activate ou Feuille.Select

Bonsoir le fil,

je voudrais juste ajouter un commentaire sur le dernier message :
Code:
Sheets(2).Range("A1").Copy Sheets(3).Range("A1")
ne revient pas au même que :
Code:
Sheets(3).[A1] = Sheets(2).[A1]
En effet dans le second cas seule la valeur de la cellule A1 sera reprise mais pas la formule s'il y en a une. Alors que dans le 1er cas la formule sera reprise mais pas la valeur si les cellules sources ne contiennent pas les mêmes données.

Cordialement
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Feuille.Activate ou Feuille.Select

Bonjour le fil, bonjour le forum,

À mon tour de remercier... Je voyais souvent l'utilisation, plus rapide à écrire, de [A1] à la place de Range("A1"). On me l'avait déconseillé mais sans vraiment m'avoir donné une explication. Donc merci Spitnolan pour cet éclaircissement.
 

Spitnolan08

XLDnaute Barbatruc
Re : Feuille.Activate ou Feuille.Select

Re,
Salut Robert;),

Je crains une mauvaise interprétation de mon intervention : Ce n'est pas la syntaxe [A1] à la place de Range("A1") qui fait la différence mais le Copy.

Cependant, pour te rejoindre, je n'aime pas la syntaxe courte pour des raisons de lecture et de compréhension du code. Mais je ne sais pas si son utilisation est différente de la syntaxe longue.

Cordialement
 

abtony

XLDnaute Impliqué
Re : Feuille.Activate ou Feuille.Select

Bonjour tout le monde,

je ne pense pas quelle soit différente, et plus rapide a écrire que la syntaxe longues ! Voici un exemple de code avec la syntaxe courte.

Code:
Private Sub BtArchiver_Click()
Dim TBf As Worksheet, TBa As Worksheet, ZZ As Range, Erg, i As Integer
Set TBa = ThisWorkbook.Worksheets("Archives Devis")
Set TBf = ThisWorkbook.Worksheets("Devis")
If IsEmpty(TBf.[num_devis]) Then   'Si absence de numéro de Bon de commande
  MsgBox (MSGNONR)
  Exit Sub
End If
Set ZZ = TBa.Columns(1).Find(What:=TBf.[num_devis].Value)
If ZZ Is Nothing Then
  Set ZZ = TBa.Cells(16384, 1).End(xlUp).Offset(1, 0)   'Ligne pour nouvelle entrée
Else
  If Not MsgBox("Ce numéro de Devis existe déjà ! Remplacer le informations correspondant ?", vbQuestion + vbYesNo) = vbYes Then Exit Sub 'Ne pas remplacer l'entrée existante
End If
'Copie de toutes les données du Devis
Application.ScreenUpdating = False
For i = 0 To 3 Step 1
  ZZ.Offset(0, i).Value = TBf.[num_devis].Offset(i, 0).Value  'Copie identification du devis
Next iFor i = 0 To 3 Step 1
  ZZ.Offset(0, i + 4).Value = TBf.[Nom].Offset(i, 0).Value 'Copie identification du client
Next i
For i = 0 To 0 Step 1
  ZZ.Offset(0, i + 8).Value = TBf.[télbur].Offset(i, 0).Value 'Copie identification du client
Next i

'Copie des options de meubles
For i = 0 To 0 Step 1
  ZZ.Offset(0, i + 9).Value = TBf.[Modèle].Offset(i, 0).Value
Next i

ce n'est qu'un avis ! je me trompe peut être.
 

ftho

XLDnaute Occasionnel
Re : Feuille.Activate ou Feuille.Select

Bonjour tlm,

Oui entièrement d'accord avec toi Spit concernant la différence entre Copy et = j'ai été un peu trop succint dans mon exemple, j'aurais du ajouter tous les paramètres de la fonction Copy...Selection.PasteSpecial Paste:=xlValues, etc...

Concernant la syntaxe [A1] perso je ne l'utilise pas non plus, je voulais juste montrer les deux extrêmes. Pour ma part je préfère jongler avec Cells(x, y)

Bonne journée à tous ;)
 

ELBASRI NAJIB

XLDnaute Nouveau
Bonsoir si possible de m'aider sur cette erreur SVP
Sub Enregistrer()
Sheets("SAISIR DES N° CLIENTS").Select
Range("B3:S3").Select
Selection.Copy
Sheets("LISTE DES CLIENTS").Select
Feuil3.Range("B10").End(xlDown).Offset(1, 0).Activate
Selection.PasteSpecial xlPasteValues
Application.CutCopyMode = False
ActiveWorkbook.Save
End Sub
ce code ne fonctionne pas avec moi si possible de m'aider a découvrir l'erreur SVP ?
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir @ELBASRI NAJIB,

bonne année 2021, et meilleurs vœux ! 🥳

ceci est juste un essai, non testé (car sans ton fichier Excel) :

VB:
Sub Enregistrer()
  Dim lig&: Application.ScreenUpdating = 0
  Worksheets("SAISIR DES N° CLIENTS").[B3:S3].Copy
  With Worksheets("LISTE DES CLIENTS")
    lig = .Cells(Rows.Count, 2).End(3).Row + 1
    .Cells(lig, 2).PasteSpecial -4163
  End With
  Application.CutCopyMode = 0
  ActiveWorkbook.Save
End Sub
de plus, j'ai supposé que ta feuille « Feuil3 » est la même
feuille que ta feuille "LISTE DES CLIENTS".


soan
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji