XL 2010 Adressage efface cellule aberrant !!

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
A nouveau soucis avec un fichier en VBA
Au niveau "traçage" des variables c'est correcte SAUF que le résultat est erroné
Pour tester > Sub dans le module1 : entrez un "VR xx" et normalement j'efface les cellules en dessous
Exemple : j'entre VR03 , dites moi si vous effacez bien E3:E10 ???
Le hic chez moi : avec un Lg =3 et col=5 ça efface 30 au lieu de VPOY en jaune ??????? on est en Lg=4
idem pour autres exemples !
Donc je demande le test chez vous , sachant que ce bout de fichier ( ci joint en copier/coller) fonctionnait normalement dans le fichier entier ce matin avant ajout de code ???
 

Pièces jointes

  • Test_Adressage.xlsm
    20.9 KB · Affichages: 16

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

Sinon, on peut aussi écrire:
Code:
Private Sub BtnEffacer()
Dim vr As String, ry As Range
      vr = InputBox("rayon")
      If Trim(vr) = "" Then Exit Sub
      Set ry = Worksheets("Entrée").Range("A2:W2,A12:W12").Find(vr, LookIn:=xlValues, lookat:=xlWhole)
      If Not ry Is Nothing Then ry.Offset(1).Resize(8).ClearContents
End Sub
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Merci !! ce que je voulais savoir sur ce Pb que je n'ai JAMAIS rencontré en 20 ans !!! est POURQUOI
- en traçant les variables vba cela est correct ?
- Le résultat est faux !!!
Il doit y avoir une explication rationnelle ?? Luc !! ( nouveau dans ce sujet après Marcel) mon fichier marche chez toi ou non ????
de Marcel : Il y a un pb de liaison à l'ouverture de ton fichier.
Moi il me demande de mettre des liaisons à Jour ?????????? faut que KROSOFT arrête de Fumer !!!!

normalement des Pb de ce genre je résous seul !! mais vu que mon Excel donne des siennes en VBA depuis une semaine , ne répond pas , se ferme tout seul , erreur VBA07 ....
Je pense tout désinstaller et refaire voire migrer 2016 ou ....??

La conclusion que j'attend ::est que vous lanciez mon fichier ensuite > Qu'EST CE QUE MON FICHIER ACTUEL DONNE CHEZ VOUS !!!

Moi il fonctionnait ce matin et là fait n'importe quoi ?? Ne pas se focaliser sur mon code !! car j'ai d'autres fichiers IDEM !!!!!!!!!!
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Merci !! ce que je voulais savoir sur ce Pb que je n'ai JAMAIS rencontré en 20 ans !!! est POURQUOI
- en traçant les variables vba cela est correct ?
- Le résultat est faux !!!
Il doit y avoir une explication rationnelle ??
A mon avis il n'y a pas d'erreur et tout est normal : la plage du With sert de référence puisque tu utilises .Range ou .Cells. Et comme la plage du With ne commence pas en A1 comme une feuille, du coup ça décale l'adressage par rapport aux adresses des cellules dans la page (ça fait un offset).

Si tes Range ou Cells se référaient à la feuille et non à la plage du With, tu tomberais au bon endroit.
Tu peux essayer de remplacer .Range par simplement Range.
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Oui ça va mieux à l'efface
J'ai jamais utilisé cette structure avec plage définie et donc en mettant A1 c'est ok !!
mais chez moi la copie ne se fait plus ??
Pourrais tu me retourner MON fichier qui tourne chez toi et que je compare ici ?
Je viens de trouver que ma Variable LocaF déclarée Public ( pour l'appel de la sub Ray_libre ) ne l'est pas ? donc exit sub ensuite !!!
 

Pièces jointes

  • Copie de Déplacement colis.xlsm
    60.8 KB · Affichages: 3

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Je confirme ce qu'a dit Marcel32 que je salue ;) ,

Le With Worksheets("Entrée").Range("A2:W40") fait que si tu pointes des références après le with, ces références sont prises à partir de la plage du With.

Voir ce code qui renvoie les adresses absolues suivant qu'elles sont pointées ou pas.
VB:
Sub test()
   With Worksheets("Entrée").Range("A2:W40")
      MsgBox .Cells(1, 1).Address      'renvoie $a$2
      MsgBox Cells(1, 1).Address       'renvoie $a$1
      MsgBox .Range("a2").Address      'renvoie $a$3
      MsgBox Range("a2").Address       'renvoie $A$2
   End With
End Sub

Ce comportement est le comportement normal de VBA avec l'emploi du with.
Si on n'y prête pas une grande attention, on peut vite se "faire avoir".
C'est pour ça que mes codes évitent souvent ce type d'écriture sauf pour des entités entières: feuille, colonnes entières, lignes entières où les références pointées ou non sont identiques.

Ton code initial fonctionne si tu enlèves les 'points' devant les cellules à effacer puisque tes numéros de lignes et de colonnes sont des numéros de lignes et colonnes absolus et non relatifs à la plage du with.

lg et col tels que tu les définis sont relatifs à la cellules A1 de la feuille. Ry.row et Ry.column sont les numéros de ligne et colonne de Ry par rapport à la feuille (et non la plage)

Si tu laisses le point, VBA va considérer .cells() comme le range de la plage définie par le with (plage qui débute en absolue à la cellule A2).
Si on ôte le point, VBA va considérer le cells() à partir de la plage de la feuille entière (plage qui débute en absolue à la cellule A1 de la feuille)
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Je vous salue également mapomme ;)
Tu as raison mapomme, c'est sur des .Cells et non sur des .Range (comme je l'ai écrit (de mémoire) , en #7) qu'il faut enlever le point.

de Marcel : Il y a un pb de liaison à l'ouverture de ton fichier.
Moi il me demande de mettre des liaisons à Jour ?????????? faut que KROSOFT arrête de Fumer !!!!
Est-ce que ça ne vient pas du Dropdown qui serait peut-être une liaison ?
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Il y a un pb dans ta macro Ray_libre : tu utilises LocaF, mais tu ne l'as pas initialisé avant l'appel à la procédure.

Il faudrait commencer par remonter l'assignation de LocaF de 3 lignes. ;)
Et il faudrait aussi supprimer la déclaration de LocaF dans le UserForm.
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
c'est Quoi le Dropdown ???
C'est le carré avec un triangle vers le bas, que l'on voit normalement quand un tableau est filtré.
Et il y en avait un considéré, comme une image, en cellule A1. Mais je ne le vois plus dans ton dernier fichier.

En revanche, tu as plus de 120 zones de texte dans la feuille "Entrée" de ton dernier fichier...
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Bon comme hier ... fatigué de tout ça !!
On regarde demain plus reposé

Dropdown : ç'est la liste déroulante , mais la select est en dur !! ?

Je vais voir à écrire à neuf le même style de structure ( sans copier/coller) avec le même code ..... peut être surprise ??

PS : je viens juste de lancer une grosse appli de 2012 et l'USF "menu" ne s'affiche plus au démarrage ?????
 

TooFatBoy

XLDnaute Barbatruc
Tu as aussi un problème avec la variable Col qui n'est pas global, donc au retour de la macro Ray_libre, la variable Col n'a pas la bonne valleur (elle a toujours la valeur qu'elle avait avant l'appel de la macro Ray_libre).


OK. Bon ben... bonne nuit ;)
 
Dernière édition:

Statistiques des forums

Discussions
312 298
Messages
2 086 977
Membres
103 416
dernier inscrit
SEB28110