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 !
Je souhaite copier les cellules non vides de la colonne A (à partir de la ligne 16 jusqu'à la fin) du classeur "ConstructionVesselBase" vers la colonne A (à partir de la ligne 3) du classeur "Feuille calculs Gantt".
J'ai rentré le code suivant mais il ne me copie que la première cellule (A16). Je pense que le problème vient de ma boucle For mais je débute.
Peut être quelqu'un aurait il une idée??
Merci d'avance,
Benoit
PS: voilà mon code
Code:
Sub Macro1()
'Copier les cellules non vides de la colonne A de la feuille de données vers la feuille de gantt
Dim j As Integer
Dim k As Integer
Sheets("ConstructionVesselBase").Select
For j = 16 To Range("A65536").End(xlUp).Row
k = j - 13
If Not IsEmpty(Range("A" & j)) Then
Range("A" & j).Copy
Sheets("Feuille calculs Gantt").Select
Range("A" & k).Select
Selection.PasteSpecial
End If
Next j
End Sub
Re : Copier les cellules non vides d'une colonne vers une autre
Pas certains mais je pense que la selection de ta feuille doit se faire à l'interieur de ta boucle for.
Car en sortie il se trouve sur ta seconde feuille qui elle ne contient qu'une valeur, la première que tu viens de copier. Donc la ligne 17 ne contient aucunes données et il sort de la boucle.
Code:
Sub Macro1()
'Copier les cellules non vides de la colonne A de la feuille de données vers la feuille de gantt
Dim j As Integer
Dim k As Integer
Sheets("ConstructionVesselBase").Select
For j = 16 To Range("A65536").End(xlUp).Row
[COLOR="Red"]Sheets("ConstructionVesselBase").Select[/COLOR]
k = j - 13
If Not IsEmpty(Range("A" & j)) Then
Range("A" & j).Copy
Sheets("Feuille calculs Gantt").Select
Range("A" & k).Select
Selection.PasteSpecial
End If
Next j
End Sub
Re : Copier les cellules non vides d'une colonne vers une autre
Merci beaucoup, ça fonctionne en effet mais c'est TREEEES long...
Savez vous s'il est possible de récupérer l'adresse de la dernière cellule non vide de ma colonne pour ensuite copier coller l'ensemble de la plage d'un seul coup?
J'imagine que ça devrait aller plus vite non?
En fait il s'agit de feuilles et pas de classeurs, juste pour employer les bons termes techniques
En fait ta boucle est ok , c'est aprés que cela ce gâte, un problème du au .select dans la boucle, et comme tu ne revients pas sur l'autre feuille et bien il trouve une cellule vide forcément.
Essais comme cela , attention au . devant les ranges, cela veut dire qu'ils sont associés au with dans ce cas
Sub Macro1()
'Copier les cellules non vides de la colonne A de la feuille de données vers la feuille de gantt
Dim j As Integer
Dim k As Integer
'Avec la feuille Construction
With Sheets("ConstructionVesselBase")
Boucle pour j de 16 à maxLigne
For j = 16 To .Range("A65536").End(xlUp).Row
'Calage d'indexe
k = j - 13
'Test si cellule non vide
If Not IsEmpty(.Range("A" & j)) Then
'Copie de la cellule
.Range("A" & j).Copy
Sheets("Feuille calculs Gantt").Select
Range("A" & k).Select
Selection.PasteSpecial
End If
Next j
'Fin du avec
End with
End Sub
Re : Copier les cellules non vides d'une colonne vers une autre
Une autre petite question subsidiaire...
Si mes cellules de la colonne A contiennent maintenant une formule qui selon le cas, renvoie une valeur ou "".
Le critère de copie n'est donc plus "non vide" puisque toutes les cellules contiennent une formule... Le code précédent de bhbh est il adaptable?
Re : Copier les cellules non vides d'une colonne vers une autre
Pour la colonne A, il s'agit de texte.
Néanmoins, j'adapte le code à d'autres colonnes qui renvoient du numérique...
Les deux options m'intéressent donc!
Par contre, dans le cas où le renvoi est du texte, c'est un peu différent, "" étant considéré comme du texte...
La solution la plus rapide, serait de modifier la formule dans la colonne qui doit renvoyer du texte et de mettre 0 à la place de "", et ainsi, ce code fonctionnerait :
Cependant, tu vas me dire, que les 0, c'est pas jouli......
Dans ce cas, tu sélectionnes toutes tes cellules contenant tes formules, et tu appliques ce format conditionnel :
La valeur de la cellule est égale à 0, tu appliques la couleur de la police à Blanc, et ainsi, les 0 n'apparaissent pas, et le deuxième code fonctionne....
Ok, c'est du bricolage, et cela ne fonctionnera bien que si toutes les cellules d'une même colonne ne doivent renvoyer qu'un seul type de données (numériques, ou texte), sinon, il faut faire du ligne par ligne, dans le cadre d'une valeur texte...
- 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