Excel 2010: l'activation des cellules collées vierges entraîne des problèmes de formule

0

Je rencontre un problème de copie / collage d'un fichier Excel vers un autre.

J'ai un classeur avec des formulaires pour entrer des données. Récemment, j'ai ajouté un sous-marin pour mettre en majuscule automatique les cellules d'entrée.

Private Sub Worksheet_Change(ByVal Target As Range)
    '   Code goes in the Worksheet specific module
    Dim rng As Range
        '   Set Target Range, i.e. Range("A1, B2, C3"), or Range("A1:B3")
        Set rng = Target.Parent.Range("B11:C47")
             '   Only look at single cell changes
            If Target.Count > 1 Then Exit Sub
            '   Only look at that range
            If Intersect(Target, rng) Is Nothing Then Exit Sub
            '   Action if Condition(s) are met (do your thing here...)
            Application.EnableEvents = False
                Target.Value = UCase(Application.WorksheetFunction.Substitute(Target.Value, " ", ""))
            Application.EnableEvents = True
End Sub

Maintenant, lorsque je copie / colle une plage de cellules (Ex: B2: B12) dans lesquelles des cellules vides sont mélangées à une version antérieure du même fichier sans le sous- fichier , certaines des cellules vides sont à l'origine de problèmes de formule. Cela disparaît si les cellules vierges collées sont activées (double-clic ou supprimées).

Je n'ai aucun moyen de modifier l'ancienne version du fichier, car il a été distribué à plusieurs personnes et il serait impossible de toutes les corriger.

Cela semble se produire de manière aléatoire car ce ne sont pas toutes les cellules vides qui posent problème et ce ne sont pas toujours les mêmes cellules. J'ai essayé = CODE (), = VALEUR (), = ISTEXT (), = ISNUMBER () pour trouver ce qui se trouve réellement dans la cellule, mais je ne peux obtenir aucune valeur, il suffit que la cellule soit du texte les cellules d’entrée sont au format texte).

Pour essayer de répondre aux questions éventuelles:

  • Copier / coller uniquement des valeurs, etc ... entraîne le même problème

  • Copier / coller dans chaque fichier fonctionne sans problème

  • Passer de l'ancien fichier au nouveau fichier fonctionne

À part entrer et simplement "effacer" les "valeurs" de toutes les cellules "vides" à chaque fois, y a-t-il un moyen d'empêcher ces cellules vides collées de nécessiter l'activation dans l'ancien fichier? Je suppose que le problème provient du sous-traitant car ce problème n'existait pas dans les versions précédentes de ce fichier.

EDIT Tout le code pour l’une des feuilles en question:

Private Sub Worksheet_Activate()

End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As     Boolean)

End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Private Sub Worksheet_Calculate()

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'   Code goes in the Worksheet specific module
Dim rng As Range
    '   Set Target Range, i.e. Range("A1, B2, C3"), or Range("A1:B3")
    Set rng = Target.Parent.Range("B11:C47")
         '   Only look at single cell changes
        If Target.Count > 1 Then Exit Sub
        '   Only look at that range
        If Intersect(Target, rng) Is Nothing Then Exit Sub
        '   Action if Condition(s) are met (do your thing here...)
        Application.EnableEvents = False
            Target.Value = UCase(Application.WorksheetFunction.Substitute(Target.Value, " ", ""))
        Application.EnableEvents = True
End Sub

Private Sub Worksheet_Deactivate()

End Sub

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

End Sub

Private Sub Worksheet_PivotTableAfterValueChange(ByVal TargetPivotTable As PivotTable, ByVal TargetRange As Range)

End Sub

Private Sub Worksheet_PivotTableBeforeAllocateChanges(ByVal TargetPivotTable As PivotTable, ByVal ValueChangeStart As Long, ByVal ValueChangeEnd As Long, Cancel As Boolean)

End Sub

Private Sub Worksheet_PivotTableBeforeCommitChanges(ByVal TargetPivotTable As PivotTable, ByVal ValueChangeStart As Long, ByVal ValueChangeEnd As Long, Cancel As Boolean)

End Sub

Private Sub Worksheet_PivotTableBeforeDiscardChanges(ByVal TargetPivotTable As PivotTable, ByVal ValueChangeStart As Long, ByVal ValueChangeEnd As Long)

End Sub

Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)

End Sub

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
John
la source
Pourquoi ne pas appuyer F9directement après le collage?
JaredT
S'il vous plaît poster le reste de votre code. Le code que vous avez posté ne vide en rien les valeurs et ne peut pas être la source du problème.
Kyle
J'ai essayé F9 après avoir collé, pas de changement malheureusement ...
John
Je ne peux malheureusement pas publier le reste du code. Il y a plus de 50 feuilles avec plusieurs macros et une taille de fichier totale de plus de 3,5 Mo. C’était le seul changement apporté au code lors de la présentation du problème, ce qui me laisse penser que c’est la cause du problème ... Je dois mentionner que les cellules "vides" affichent un compte lorsqu'elles sont mises en surbrillance. Ils ne s'affichent qu’après que quelque chose a été entré et que le sous-programme s’exécute. Le sous-marin pourrait-il laisser des cellules avec une valeur fantôme ou une exigence d'activation à la fin? Merci
John
Je devrais ajouter qu'avoir la fonction = ISBLANK () en regardant la colonne du problème indique si la cellule contient une valeur.
Jean

Réponses:

0

Le problème concernait le fichier le plus récent, mais pas le sous-fichier. Quelqu'un d'autre (fichier principal partagé) avait apparemment laissé des données dans quelques cellules. Je ne sais pas pourquoi cela n'a pas provoqué d'erreur sur la feuille mais après avoir été copié dans l'ancien fichier. Les données n'étaient pas un espace ou 0 qui n'était pas affiché, les formules ne savaient donc pas comment les traiter et renvoyaient des erreurs. La suppression du contenu des cellules du fichier le plus récent et l’enregistrement ont corrigé le problème.

John
la source