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
F9
directement après le collage?Réponses:
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.
la source