Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA Copier Valeur

  • Initiateur de la discussion Initiateur de la discussion brounno
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

brounno

Guest
Bonjour,

j'ai un souci concernant un copier valeur dans mon code. Le problème se situant avec le XLdown.
En effet je souhaite copier toutes les valeurs d'une colonne. Or ce code copie toutes les cellules non vide. La colonne ayant des formules du type "si(D3>0;ok;"") renvoyant donc à une cellule avec valeur nulle mais non vide.
Le xldown renvoyant donc à la fin des cellules non vide, comment faire pour ne copier que les valeurs?

voici mon code

Dim classeurA As Workbook
Dim classeurB As Workbook
Dim feuillesource As Range
Dim feuillerecept As Range

Set classeurA = Workbooks.Open("C:\Documents and Settings\bruno\Bureau\Consolidation\Fichier Pointage.xlsm")
Set feuillesource = classeurA.Sheets("dupont").Range("C9:J9")
Set feuillesource = feuillesource.Resize(feuillesource.End(xlDown).Row - feuillesource.Row + 1)

Set classeurB = Workbooks("classeur4.xlsm")
Set feuillerecept = classeurB.Sheets("Feuil1").Range("A1")
Set feuillerecept = feuillerecept.Offset(feuillerecept.End(xlDown).Row - feuillerecept.Row + 1)

feuillesource.Copy Destination:=feuillerecept

End Sub

merci d'avance pour votre aide!
 
Re : VBA Copier Valeur

Salut brounno et le forum
Bienvenue
Utilise les balises de code (icone # en mode avancé)
Pas sûr de ton code, alors, je ne vais traiter que
Code:
Set feuillesource = classeurA.Sheets("dupont").Range("C9:J9")
    Set feuillesource = feuillesource.Resize(feuillesource.End(xlDown).Row - feuillesource.Row + 1)
Ce que je comprends : tu veux la plage de C à J de la ligne 9 à dernière non-vide en C. J'utilise (xlUp). ce qui me donne :
Code:
Dim X as long
...
X=classeurA.Sheets("dupont").cells(rows.count,"C").end(xlup).row
Set feuillesource = classeurA.Sheets("dupont").Range("C9:J" & X)
De même, quand on copie une plage, il suffit de donner la cellule de départ et de laisser Excel faire le boulot
Code:
feuillesource.Copy Destination:=classeurB.Sheets("Feuil1").Cells(rows.count,"A").end(xlup)(2)
J'ai laissé l'arguement en explicite, pour que tu puisses comprendre. Mais on peut faire directement
Code:
feuillesource.Copy classeurB.Sheets("Feuil1").Cells(rows.count,"A").end(xlup)(2)
le (2) revient à écrire .offset(1,0)
A+
Edit : Je viens de tester, et le xlDown me donne le même résultat (dernière non-vide, même si elle ne contient que ""). L’erreur ne vient pas de là. mais sans doute du fait que C s'interrompt avant une des autres colonnes.
 
Dernière édition:
Re : VBA Copier Valeur

Bonjour le fil

brounno
En effet je souhaite copier toutes les valeurs d'une colonne.
Or pour moi
Set feuillesource = classeurA.Sheets("dupont").Range("C9:J9")
n'est pas une colonne mais une "ligne"

(or alors (aie) cellules fusionnées)

EDITION: ci-dessous un exemple pour "copier" des valeurs d'une colonne sans passer par le copier/coller
Les 2 classeurs sont ouverts
Les valeurs seules de colonne A du classeur 1 (qui contenait cette formule : =LIGNE()+1)
sont copiés dans la colonne A de feuille 2 du classeur 2.
PS: pour le test, j'ai juste enregistrer le classeur 1 avec un nom type : toto.xls
Le classeur 2 étant lui juste ouvert dans Excel (dans la même instance que toto.xls)
VB:
Sub test() 'à réadapter à ton contexte pour utilisation
Dim source As Workbook, desti As Workbook, t

Set source = ThisWorkbook 'ici adapter
t = source.Sheets(1).Range([A1], [A65536].End(3)).Value

Set desti = Workbooks("Classeur2") 'ici aussi
desti.Sheets(2).Range("A1").Resize(UBound(t)) = t
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
915
Réponses
5
Affichages
418
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…