Macro vba plante quant fichier partagé [Résolu]

eserpios 22 Messages postés vendredi 6 juin 2008Date d'inscription 19 avril 2012 Dernière intervention - 18 avril 2012 à 10:35 - Dernière réponse : eserpios 22 Messages postés vendredi 6 juin 2008Date d'inscription 19 avril 2012 Dernière intervention
- 19 avril 2012 à 13:06
Bonjour,

Pour mon taf, je dois réaliser un fichier partagé contenant une liste de contact téléphoniques classée par nom d'application, en mode non-partagé le fichier fonctionne très bien, cependant dès que je partage le fichier les macro de recherche incluse ne fonctionne plus, me retournant une erreur 1004 sans la possibilité d’accéder au debug:

Voiçi le fichier:mon fichier

Merci d'avance à tous ceux qui porteront attention a ma demande.
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
eserpios 22 Messages postés vendredi 6 juin 2008Date d'inscription 19 avril 2012 Dernière intervention - 19 avril 2012 à 13:06
3
Merci
ok

je passe le sujet en résolu

Merci eserpios 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de eserpios
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 18 avril 2012 à 11:06
0
Merci
Salut,

je prend les devants avant que ne te fasse incendier !

1)Tu n'est pas dans le bon thème ! pour le VBA il existe un thème spécifique.

2)un fichier joint est en générale mal vu d'autan que tu ne précise rien sur la version d'excel utilisé, du contenu etc.

3) manque de précision sur l'erreur !

As tu essayé de fair fonctionner ton code en mode pas à pas en mode partagé ?

A+
Commenter la réponse de bigfish_le vrai
bigfish_le vrai 1839 Messages postés vendredi 13 mai 2005Date d'inscription 20 novembre 2013 Dernière intervention - 18 avril 2012 à 11:07
0
Merci
pardon tu es dans le bon theme !

confondu avec un autre poste
Commenter la réponse de bigfish_le vrai
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 18 avril 2012 à 11:37
0
Merci
Bonjour,
Bien dit en ce qui concerne le fait de joindre un classeur (je n'ouvre personnellement pas ceux que je n'ai pas créé moi-même . Les raisons de sécurité sont évidentes).
Tu dois pouvoir isoler ton problème et exposer ici le seul bout de code qui pose difficulté.
L'erreur signalée peut avoir des causes multiples.
Difficile de tenter d'en dresser la liste exhaustive.
Mais tu parles d'un fichier partagé et il me vient à l'idée que, parmi les causes, il y aurait peut-être des bouts de code bâtis à coups de select, etc ... ===>> puis des ActiveSheet ou AcriveCell, etc ... ===>>> mauvaise habitude qui ferait en plus qu'un utilisateur se retrouve avec la sélection de l'autre.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 18 avril 2012 à 11:59
0
Merci
Ah oui ! Bien sûr !
Faudrait pas que ton appli fonctyionne à coups de protection et déprotection, car : là aussi : jolie possibilité de conflit (une macro déprotège et cherche à modifier pendant que l'autre (depuis un autre utilisateur) protège ...)
Etc ... etc ...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
eserpios 22 Messages postés vendredi 6 juin 2008Date d'inscription 19 avril 2012 Dernière intervention - 18 avril 2012 à 15:00
0
Merci
Merci pour vos réponses

Je n'ai pu isoler le bout de code qui pose problème vu que je ne peut accéder au mode debug quant le fichier est partager:

Voici le code qui pose problème:
Private Sub TextBox10_Change()

'*** declaration des variables***

Dim rngTrouve As Range
Dim strChaine As String
Dim sExtentionFiltre As String
Dim Colonne As Integer


'*** initialisation recherche***

    'valorisation de "strChaine" avec la valeur rentrée par l'utilisateur
sExtentionFiltre = "*"
strChaine = UCase(Trim(TextBox10.Text)) + sExtentionFiltre

    'désactivation du filtre
Worksheets("Feuil1").AutoFilterMode = False
    'inisialisation recherche
Set rngTrouve = Range("A4:A6000").Find(what:=strChaine, LookAt:=xlPart)

'*** retour de la recherche***

    'si recherche non trouvé, envoi d'un message
If rngTrouve Is Nothing Then
MsgBox "Pas trouvé"
    'sinon affiché le résultat et recuperer le n° de colonne du resultat
Else
Range("A4:A6000").Find(what:=strChaine, LookAt:=xlPart).Select
Colonne = ActiveCell.Column
End If

Set rngTrouve = Nothing
    'verouillage sur la Textbox
TextBox10.Activate
    'si "strChaine est vide ou si colonne = 0 alors desactiver filtre
If strChaine "" Or strChaine "*" Or Colonne = 0 Then
Worksheets("Feuil1").AutoFilterMode = False
Else
    'sinon trier les resultat suivant la colonne ou se trouve le resultat
ActiveSheet.Range("A4:A6000").AutoFilter Field:=Colonne, Criteria1:=strChaine
End If

End Sub


En ce qui concerne le mode pas a pas en non partagé, je ne connaissais pas, je vais regarder cela dès que je peux.

vous verrez effectivement qu'il ya du .select et du .activate de partout (je ne sais pas encore codé autrement, je débute)
Commenter la réponse de eserpios
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 18 avril 2012 à 16:33
0
Merci
vous verrez effectivement qu'il ya du .select et du .activate de partout (je ne sais pas encore codé autrement, je débute)

On code en pointant vers les objets, non en les sélectionnant, en les activant, etc ...
Il va falloir que tu commences par cela, c'est sûr ! !
exemple (une petite partie du code montré) :
Range("A4:A6000").Find(what:=strChaine, LookAt:=xlPart).Select
Colonne = ActiveCell.Column

s'écrirait :
Colonne = Range("A4:A6000").Find(what:=strChaine, LookAt:=xlPart).Column

Mais cette même ligne est assez curieuse, car elle reprend dans un Else le cas d'une chaîne déjà cherchée et qui serait trouvée (dans le If) ... !!
Et ce devrait logiquement alors être tout bêtement et tout logiquement :
If rngTrouve Is Nothing Then
  MsgBox "Pas trouvé"
    'sinon affiché le résultat et recuperer le n° de colonne du resultat
Else
  Colonne = rngTrouve.Column
End If

Il est assez clair que si tout ton code est construit sur de telles bases, il ne faut pas t'étonner ensuite de més&aventures en tous genres, surtout si partagé !
J'observe au passage que le code montré est( lancé au Change d'une textbox !
C'est encore pire car :
- soit cette textbox est modifiée par code, d'un seul coup, et on se demande à quoi elle sert alors qu'une simple variable aurait fait l'affaire
- soit elle est modifiée par l'utilisateur et c'est encore pire car ton code se lancera à chaque geste fait dans la saisie !
- dans un cas comme dans l'autre de ces deux cas : conflit assuré entre deux utilisateurs qui provoqueraient, chacun de son côté, le déclenchement de cet évènement Change !
Voilà déjà (sur un seul petit bout de code) !
Je crois que tu devrais reprendre tout, ligne par ligne, en repensant aux conséquences possibles de chaque instruction exécutée...
Bonne reprise ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
eserpios 22 Messages postés vendredi 6 juin 2008Date d'inscription 19 avril 2012 Dernière intervention - 18 avril 2012 à 17:28
0
Merci
ok, merci pour les infos, je vais voir ça.
Commenter la réponse de eserpios
eserpios 22 Messages postés vendredi 6 juin 2008Date d'inscription 19 avril 2012 Dernière intervention - 19 avril 2012 à 10:57
0
Merci
Bonjour, je bloque sur cette partie du code que je voudrais modifié pour évité l'erreur 1004 en mode partagé:

'verouillage sur la Textbox
'verouillage sur la Textbox

TextBox11.Activate


D'avance merci
Commenter la réponse de eserpios
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 19 avril 2012 à 11:05
0
Merci
On inhibe ou on habilite une textbox en utilisant sa propriété enabled (true pour l'habiliter, false pour l'inhiber).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 19 avril 2012 à 11:12
0
Merci
Je n'ai toutefois ainsi répondu qu'à ta dernière question.
Et cette réponse n'est selon moi pas en conformité avec ta "démarche".
Si inhibée : inhibée pour tous (et alors ? )
Va falloir que tu te trouves un autre mécanisme, avec expressions conditionnelles !
Des idées en vrac, mais je vais te laisser trouver et mettre en place TON stratagème :
- utilisation d'une variable booléenne à mettre à true lorsque la textbox a le focus (donc lorsque un utilisateur s'y est mis). La mettre à False lorsqu'il en sort
- empêcher tous les autres utilisateurs de travailler tant que cette booléenne est à true.
Allez ! à toi ===>> cela relève plus de l'organisation de la pensée que de la connaissance de VBA.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.