Bug range qui me rend dingue

Bonjour, j'ai dans un programme, plusieurs cellules sur lesquelles je peux cliquer. Quand je clique sur une, je dois sélectionner une plage du genre :

Sheets("Résumé").Range(Cells(1, 1), Cells(2, 2)).Select

Mais ce code, que j'ai fait 50 fois me renvoie une erreur depuis 2h !

(les 1 et 2 des cells sont remplacés par des XXX.row ou colum, mais même avec des 1 et 2 ça bug)

même un bête range.("A1").select me renvoie une erreur.

(Le tout est dans un Worksheet_BeforeDoubleClick)

Merci

Hum... dans le débogage, quand je me place sur cells(1,1), il parle du contenu d'une cellule d'une autre page..... même si je mets sheets("Résumé").activate juste avant... pourquoi me parle-t-il d'une autre page alors que c'est pas celle-l) d'activée :/

Serait-ce parce que les cellules sur lesquelles ont clique sont elles-mêmes sur une autre plage?

En gros je veux cliquer sur les cellules de la F1 et sélectionne sur la F2...

Bonjour

Si cela ne marche pas avec le fichier joint, c'est que tu as un vrai problème !

Vend ton PC et achète en un autre !

Bye !

26essai-v1.xlsm (17.94 Ko)

Oui, mais moi, mon truc, quand je clique sur la feuille F1, ça copie des trucs de F1 dans F2. ça pas de problème

Puis je dois (toujours automatiquement après mon clique) sélectionner les éléments de F2 et les mettre en forme.

ElseIf Not Intersect(Target, Range("FirstNuméro:LastNuméro")) Is Nothing Then 'si je clique sur une case, je conserve ses coordonnées + la suite'

Colonne = ActiveCell.Column 'colonne du nom sur lequel on clique'
Ligne = ActiveCell.Row 'Ligne du nom sur lequel on clique'
Feuille = ActiveWorkbook.ActiveSheet.Name 'Feuille du nom sur lequel on clique'
MaxColonne = 0 'compte le nomdre de colonne dans le tableau des punitions pour le tri'
Lastligne = 0 'regarde la ligne à laquelle je m'arrête ==>dernière ligne'

Sheets("Résumé").Activate
Sheets("Résumé").Range("DatePunition").Select 'je pars de la case DatePunition'

    Do While Not (IsEmpty(ActiveCell)) 'je cherche une ligne vide après les entêtes'
    Selection.Offset(1, 0).Select
    Lastligne = ActiveCell.Row

    Loop
Sheets("Résumé").Cells(ActiveCell.Row, Sheets("Résumé").Range("DatePunition").Column).Select 'date'
UserForm1.Label1.Caption = "Entrer la date" 'modification étiquette userform"
UserForm1.Show 'clavier pour taper date'

ActiveCell = CDate((Format(ActiveCell, "dd,mm"))) 'date'
Sheets("Résumé").Cells(ActiveCell.Row, Sheets("Résumé").Range("HeurePunition").Column).Select 'heure de cours'
UserForm1.Label1.Caption = "Entrer l'heure" 'modification étiquette userform"
UserForm1.Show 'clavier pour taper Heure'
Sheets("Résumé").Cells(ActiveCell.Row, Sheets("Résumé").Range("NomPunition").Column) = Sheets(Feuille).Cells(Ligne, Sheets(Feuille).Range("NOM").Column) 'Nom du puni'
Sheets("Résumé").Cells(ActiveCell.Row, Sheets("Résumé").Range("PrénomPunition").Column) = Sheets(Feuille).Cells(Ligne, Sheets(Feuille).Range("Prénom").Column) 'Prénom du puni'
Sheets("Résumé").Cells(ActiveCell.Row, Sheets("Résumé").Range("ClassePunition").Column) = Sheets(Feuille).Range("Classe") 'Classe du puni'
Sheets("Résumé").Cells(ActiveCell.Row, Sheets("Résumé").Range("IDCPunition").Column) = Sheets(Feuille).Range("IntituléDuCours") 'Cours'
Sheets("Résumé").Cells(ActiveCell.Row, Sheets("Résumé").Range("NbPunition").Column).Select
UserForm1.Label1.Caption = "Entrer le nomdre de fois" 'modification étiquette userform"
UserForm1.Show 'clavier pour taper cmb de fois'
UserForm1.Label1.Caption = "Pavé numérique" 'Remise de l'étiquette"
Sheets("Résumé").Cells(ActiveCell.Row, Sheets("Résumé").Range("Punition").Column).Select
'encadrement et triage par date'

Sheets("Résumé").Range("DatePunition").Select 'je pars de la case DatePunition'
  Do While Not (IsEmpty(ActiveCell)) 'je cherche une ligne vide après les entêtes'
    Selection.Offset(1, 0).Select
    MaxColonne = ActiveCell.Column
    Loop

Enfin le code importe peu, trop de variable personnelle définie ailleurs pour le comprendre .

Une bête sélection de cellule ça va, mais dès qu'on veut une plage, plus moyen :/

C'est la même chose avec ton fichier, si tu rajoutes une page ddd et que tu l'actives, ça plante :

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Count > 1 Then End
    If Not Intersect(Target, Cells(5, 3)) Is Nothing Then
    Sheets("ddd").Activate
        Range(Cells(1, 1), Cells(2, 2)).Select
    End If
End Sub

Bonjour,

Essaie ainsi avec avec la procédure 'Test' dans un module standard.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Call Test
End Sub
Public Sub Test()
    Worksheets("Résumé").Activate
    Range(Cells(1, 1), Cells(2, 2)).Select
End Sub

Tiens.... ça fonctionne.

Pourquoi donc?

Qu'elle est la différence entre :

Worksheets("Résumé").Activate

et

sheets("Résumé").Activate ?

Bonjour,

Une idée, essaie peut être avec le nom de la feuille plutôt que Sheets("Résumé")

au lieu de Sheets("Résumé") mets Feuil1 si Sheets("Résumé") correspond à la feuille 1 ou encore sheets(1)

ddetp

Le problème c'est que je peux intercaller des pages avant Résumé, donc je dois absolument la prendre par son nom.

alenbix a écrit :

C'est la même chose avec ton fichier, si tu rajoutes une page ddd et que tu l'actives, ça plante :

Tu m'en diras tant !

Tu as une macro événementielle double-clic dans ta feuille ''Résumé'' et tu la fais fonctionner dans la feuille ''ddd''.

Ce n'est pas possible.

Il te faut mettre cette macro dans ''ThisWorkbook'' et elle fonctionnera sur toutes les feuilles.

OK ?

Non, même si tu intercales des onglets les précédents ne changeront pas de dénomination.

Cordialement

Bas pour moi le code se lance quand je clique sur la cellule de la bonne page, mais après le reste je pensais pouvoir faire ce que je veux ...

Je clique sur la F1 pour lancer le code et je fais ce que je veux dans les autres feuilles :/

Je passerai par un module, ça à l'air de fonctionner.

Re,

Pour ma part, j'ai considéré que que la feuille 'Résumé n'était pas la feuille active lors du double clic.

Sheets ou worksheets, sont identiques [(presque)! - voir aide].

Cdlt.

Oui, c'est ça, elle est pas active lors du clique , ce n'est donc pas elle qui à le code quand doubleclique sur ...

Mais comme je l'active dans le code même lancer par le doubleclique, je pensais pouvoir y faire ce que je voulais... A première vue non


Arrrrrrrrg... Dans ma sélection, j'utilise des variables .... quand je mets mon appel dans un Module, les variables sont vides :s

Bon bas, j'ai recopié les calculs des variables dans le module et ça va

Merci bien ^^

Rechercher des sujets similaires à "bug range qui rend dingue"