Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

UsedRange et sélectionne de case vide ???

3 réponses
Avatar
marcpolie
Bonjour,


J'ai un léger problème avec du VBA que j'ai concu. Ce n'Est pas le
plus code VBA, mais c'est le seul moyen que j'ai trouvé pour y
arriver.

Sub enregistrer()

'Copie des valeurs de la feuille Temp
With Worksheets("Temp")
.Activate
.UsedRange.Copy
End With

'Recoit les valeurs de la feuille Temp
'Copie les valeurs après réception
With Worksheets("Temp2")
.Activate
.Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
.Range("A1").Select
.UsedRange.Copy
End With

'Activation du fichier de l'utilisateur
Worksheets("BD").Activate

'Copie des données sur la feuille BD
ActiveSheet.Paste
Destination:=Worksheets("BD").Range("A1").End(xlDown).Offset(1, 0)
'Vider le presse-papier
Application.CutCopyMode = False

End Sub

----------------------------------------------------------------

Le problème, c'est que lors de ma 2ème copie sur la feuille Temp2
après le coller, il copie aussi les case vide, je voudrais qu'il ne
les sélectionne pas.

Je fais 2 copie pcq la première ne copiait pas seulement les valeur
mais aussi les =SI(...) donc j'avais des choses en trop de copier et
inutile sur la feuille BD.

Merci de bien vouloir m'aider.

3 réponses

Avatar
AV
Si je comprends l'histoire des cellules vides...:
Il peut y avoir 2 problèmes avec l'utilisation de UsedRange.Copy :
* inclusion des cellules affichant vides mais contenant une formule style
=si(A1="";"")
Ca c'est logique : les cellules ne sont pas vides
* inclusion des cellules vides dans la mesure où, à un quelconque moment, elles
ont été formatées !
Ca c'est bcp moins normal et c'est Le problème de UsedRange

Pour contourner (et à tester), ton code pourrait être :

Sub zzz()
Sheets("Temp").UsedRange.SpecialCells(xlCellTypeConstants, 23).Copy
Sheets("BD").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub

AV
Avatar
marcpolie
Bonjour AV,

J'ai fait ce que tu m'as dis

'Copie des valeurs de la feuille Temp
With Worksheets("Temp")
.Activate
.UsedRange.SpecialCells(xlCellTypeConstants, 23).Copy
End With

'Activation du fichier de l'utilisateur
Worksheets("BD").Activate

'Copie des données sur la feuille BD
Sheets("BD").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial
Paste:=xlValues

'Vider le presse-papier
Application.CutCopyMode = False

End Sub


Voici le code que j'ai mis à la place de l'ancien. Le seul problème,
il copie que la première ligne celle avec des fonctionne il ne copie
pas.

es-ce que cela pourrait être le type de SpecialCells qui foire ????
j'ai essayé xlCellTypeAllFormatConditions mais ça me plante dans le
visage.

Merci encore pour ton aide.


"AV" wrote in message news:...
Si je comprends l'histoire des cellules vides...:
Il peut y avoir 2 problèmes avec l'utilisation de UsedRange.Copy :
* inclusion des cellules affichant vides mais contenant une formule style
=si(A1="";"")
Ca c'est logique : les cellules ne sont pas vides
* inclusion des cellules vides dans la mesure où, à un quelconque moment, elles
ont été formatées !
Ca c'est bcp moins normal et c'est Le problème de UsedRange

Pour contourner (et à tester), ton code pourrait être :

Sub zzz()
Sheets("Temp").UsedRange.SpecialCells(xlCellTypeConstants, 23).Copy
Sheets("BD").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub

AV


Avatar
marcpolie
il copie que les cellue ou il n'y a pas de fonctions

la première ligne avait aucune fonction donc depuis que je l'ai enlevé
ça ne fonctionne plus.


merci de bien vouloir continuer de m'aider