Copier en valeur les cellules non-vides d'une colonne (en vba) ??

  • Initiateur de la discussion Initiateur de la discussion Tonino7
  • 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 !

Tonino7

XLDnaute Occasionnel
Voilà, étant novice dans le langage VBA, ça fait 3 jours que j'essaye de faire une matrice avec plein d'automatisation, et là je bloque sur une étape.

En fait, je voudrais copier en valeur (vers une autre feuille) les cellules non-vides d'une colonne, et ce, de manière automatique. Donc par l'intermédiaire d'une macro évenementielle worksheet_change.

Et concernant la copie de valeur:
admettons que la colonne soit B, si les cellules non-vides sont B7,B8,B9,B12,B13 ; et bien, le but, c'est que la copie de ces valeurs se fasse exactement dans les meme cellules mais sur l'autre feuille. Je n'veux pas que la copie se fasse sur B1;B2;B3 etc..

Merci à tous pour votre aide.
 
Dernière édition:
Re : Copier en valeur les cellules non-vides d'une colonne (en vba) ??

bonjour Tonino7

teste ceci

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range
Dim cel As Range
Set plage = Range("B1:B" & Range("B65536").End(xlUp).Row)
For Each cel In plage
If cel.Value <> "" Then
 ActiveWorkbook.Sheets("Feuil2").Range(cel.Address) = cel.Value
End If
Next cel
End Sub
 
Re : Copier en valeur les cellules non-vides d'une colonne (en vba) ??

ah yes ! c'est magique ça marche;Merci.

En fait, j'ai un autre détail à régler. Concernant la macro évenementielle, je voudrais que cette copie en valeur s'effectue lorsqu'une plage de cellules de la "feuil3" change.

En général, pour déclencher la macro lorsqu'une seule cellule de la feuille (exemple C7) change; juste apres "Private Sub Worksheet_Change(ByVal Target As Range)"; j'inscris " If Target.Address = "C7" Then ... blablabla.
Or ici , comme il y a un autre "if", ma macro ne fonctionne pas, enfin je dois louper une étape.
Et en l'occurence , pour la problématique à laquelle je suis confronté, je veux carrément que ce soit une plage de cellule et non une seule cellule, qui change (je ne connais pas la formule, je ne pense pas que ce soit "If Target.Adress = "), et de surcroît, je veux que cette plage de cellule soit sur une autre feuille ("feuil3").

Je sais pas si j'ai été tres clair, mais si vous avez la solution, ce serait magnifique ! merci

ps: dois-je saisir la formule que vous allez me donner, dans thisworkbook ou sur une des feuilles (excel objects). MERCI
 
Re : Copier en valeur les cellules non-vides d'une colonne (en vba) ??

bonjour,

il y a plus simple :

Code:
    Sheets("Départ").Select
    Columns(2).Copy
    
    Sheets("Arrivée").Select
    Range("A1").PasteSpecial xlPasteValues
    Application.CutCopyMode = False
sinon, dans le code de pierrejean, surtout ne pas oublier de mettre "Set plage = Nothing" à la fin de la procédure, sinon, la mémoire va saturer. c'est obligatoire pour plage, mais pas pour cel (dans la boucle For Next), car c'est fait implicitement.

Bon code, et à une prochaine...
 
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

Discussions similaires

Retour