Incompatabilité VBA avec le classeur partagé
Stephane
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Dans le cadre d'un stage j'ai du commencer l'apprentissage du VBA. Les débuts ont été fastidieux, mais maintenant je pense être plus ou moins au point avec ce langage de programmation. Après plusieurs semaines de dure labeur, j'ai fini par réussir à aboutir à un programme fonctionnel et répondant à mes attentes. Cependant l'étape suivante consiste à rendre le document sur lequel j'ai travaillé ainsi que le programme accessible à plusieurs personnes. De ce fait, j'ai cherché à mettre le classeur avec le programme VBA en "Classeur partagé". Jusque là aucun problème, mais c'est après quand je lance le programme qu'interviennent de nombreux problèmes liés au VBA.
Après plusieurs recherches j'ai vu qu'il était impossible de réaliser certaines fonctions avec le VBA sous classeur partagé. Je me demandais s'ils existait cependant certaines astuces pour les contourner? J'ai pu trouver la provenance de certains bog en utilisant la commande MsgBox à outrance. Je vous c/c ci-dessous certaines parties de code qui posent problème :
J'aimerais vider intégralement la feuille de calcul (formats et valeurs) sans pour autant avoir à en recréer une nouvelle. De plus, je dispose de certaines cellules fusionnées, mais il suffirait seuelement de ne pas les "unmerge".
A la suite du code, je cherche des cellules dans un autre fichier excel puis les copie/colle en gardant le format ainsi que les mises en formes conditionnelles que je dois absolument garder. Ce passage me pose encore problème, mais je n'ai pas eu le temps de l'analyser complétement... Je suppose (sans aucune certitude) que l'erreur pourrait également provenir de ce passage :
Auriez-vous des astuces ou conseils pour m'aider à faire fonctionner mon programme VBA dans une classeur partagé?
En attente de vos réponses,
Cordialement.
Dans le cadre d'un stage j'ai du commencer l'apprentissage du VBA. Les débuts ont été fastidieux, mais maintenant je pense être plus ou moins au point avec ce langage de programmation. Après plusieurs semaines de dure labeur, j'ai fini par réussir à aboutir à un programme fonctionnel et répondant à mes attentes. Cependant l'étape suivante consiste à rendre le document sur lequel j'ai travaillé ainsi que le programme accessible à plusieurs personnes. De ce fait, j'ai cherché à mettre le classeur avec le programme VBA en "Classeur partagé". Jusque là aucun problème, mais c'est après quand je lance le programme qu'interviennent de nombreux problèmes liés au VBA.
Après plusieurs recherches j'ai vu qu'il était impossible de réaliser certaines fonctions avec le VBA sous classeur partagé. Je me demandais s'ils existait cependant certaines astuces pour les contourner? J'ai pu trouver la provenance de certains bog en utilisant la commande MsgBox à outrance. Je vous c/c ci-dessous certaines parties de code qui posent problème :
Cells.FormatConditions.Delete
Cells.ClearFormats
Cells.ClearContents
Cells.ClearComments
J'aimerais vider intégralement la feuille de calcul (formats et valeurs) sans pour autant avoir à en recréer une nouvelle. De plus, je dispose de certaines cellules fusionnées, mais il suffirait seuelement de ne pas les "unmerge".
A la suite du code, je cherche des cellules dans un autre fichier excel puis les copie/colle en gardant le format ainsi que les mises en formes conditionnelles que je dois absolument garder. Ce passage me pose encore problème, mais je n'ai pas eu le temps de l'analyser complétement... Je suppose (sans aucune certitude) que l'erreur pourrait également provenir de ce passage :
If prod <> 0 Then
Workbooks(wb_copier).Worksheets(ws_copier).Cells(lig_copier, prod).Copy
Workbooks(wb_coller).Worksheets(ws_coller).Cells(lig_coller, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues
Selection.PasteSpecial Paste:=xlPasteFormats
Selection.PasteSpecial Paste:=xlPasteComments
'Comme impossible de copier tout sauf formule, copier en 3 fois
End If
Auriez-vous des astuces ou conseils pour m'aider à faire fonctionner mon programme VBA dans une classeur partagé?
En attente de vos réponses,
Cordialement.
A voir également:
- Incompatabilité VBA avec le classeur partagé
- Partage de photos - Guide
- Meilleur site partage abonnement - Accueil - Services en ligne
- Partage d'écran whatsapp pc - Accueil - Messagerie instantanée
- Partage reseau - Guide
- Album partagé google - Guide
2 réponses
Bonjour,
sans pour autant avoir à en recréer une nouvelle.
Pourquoi cette réticence si ça te règle 50% de tes problèmes ?
Tu te crées une feuille modèle cachée que tu as juste à dupliquer.
eric
sans pour autant avoir à en recréer une nouvelle.
Pourquoi cette réticence si ça te règle 50% de tes problèmes ?
Tu te crées une feuille modèle cachée que tu as juste à dupliquer.
eric
Bonjour Eric,
J'aimerais éviter de créer une nouvelle feuille car je dispose de cellules fusionnées dans la feuille que je traite, par conséquent comme je sais qu'il est impossible de fusionner des cellules une fois le classeur partagé, ça devient compliqué, je me trompe?
Stephane
J'aimerais éviter de créer une nouvelle feuille car je dispose de cellules fusionnées dans la feuille que je traite, par conséquent comme je sais qu'il est impossible de fusionner des cellules une fois le classeur partagé, ça devient compliqué, je me trompe?
Stephane
Bonjour,
De toute façon, même non partagé, il faut éviter au maximum de fusionner les cellules.
En horizontal tu peux 'centrer sur plusieurs colonnes', en vertical écrire sur la 1ère cellule (le plus simple et le mieux à mon avis) ou bien calculer la cellule centrale.
Et pour ton 2nd soucis il faut que tu copies les propriétés qui t'intéressent une par une. Par exemple :
eric
De toute façon, même non partagé, il faut éviter au maximum de fusionner les cellules.
En horizontal tu peux 'centrer sur plusieurs colonnes', en vertical écrire sur la 1ère cellule (le plus simple et le mieux à mon avis) ou bien calculer la cellule centrale.
Et pour ton 2nd soucis il faut que tu copies les propriétés qui t'intéressent une par une. Par exemple :
[A1] = [B1].Value [A1].Font.ColorIndex = [B1].Font.ColorIndex [A1].Interior.ColorIndex = [B1].Interior.ColorIndex With [A1].Borders .LineStyle = [B1].Borders.LineStyle .Weight = [B1].Borders.Weight .ColorIndex = [B1].Borders.ColorIndex End With [A1].ClearComments If Not [B1].Comment Is Nothing Then [A1].AddComment [B1].Comment.Text End If
eric