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

Copie ligne sans cellule vide

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

K

kayslife

Guest
Bonjour tout le monde.

j'ai un souci depuis pas mal de temps. comme l'indique mon fichier joint j'ai une ligne avec des cellules vides. Mais je voudrais la copiée vers une autre feuille (de préférence par formule mais j'accepte aussi les macros) sans les cellule vide.



Merci
 

Pièces jointes

Re : Copie ligne sans cellule vide

Bonjour,

En passant par une macro, à coller dans un module :

VB:
Sub Macro1()

'Déclaration des variables
Dim tabv1(0 To 1, 0 To 10)
Dim i, k, Colonne_fin As Integer
Dim ligne_donnee, ligne_copie As Integer

'Initialisation des variables
ligne_donnee = 2
ligne_copie = 2
Colonne_fin = ThisWorkbook.Sheets("BASE").Cells(ligne_donnee, 50).End(xlToLeft).Column
    
'Récupération des données
For i = 1 To Colonne_fin
    If Sheets("BASE").Cells(ligne_donnee, i) <> 0 Then
        tabv1(0, k) = Sheets("BASE").Cells(ligne_donnee, i)
        k = k + 1
    End If
Next

'Recopie des données
Sheets("RESULTAT").Activate
Range(Cells(ligne_copie, 1), Cells(ligne_copie, 20)).Resize(1, k) = tabv1
    
End Sub

A+
 
Re : Copie ligne sans cellule vide

Bonjour le fil, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)

For Each cel In Sheets("BASE").Range("A2").CurrentRegion 'boucle sur toutes les cellules de la plage des cellules éditées adjacente à A2 de l'onglet "BASE"
    With Sheets("RESULTAT") 'prend en compte l'onglet "RESULTAT"
        'définit la cellule de destination
        Set dest = IIf(.Range("A2").Value = "", .Range("A2"), .Cells(2, Application.Columns.Count).End(xlToLeft).Offset(0, 1))
    End With 'fin de la prise en compte de l'onglet "RESULTAT"
    If cel.Value <> 0 Then cel.Copy dest 'si la cellule est diférente de zéro, copie et colle la cellule cel dans dest
Next cel 'prochaine cellule de la boucle
End Sub
 
Re : Copie ligne sans cellule vide

Bonjour kayslife, Legolas, Robert,

Formule matricielle en cellule RESULTAT!A2 :

Code:
=SI(COLONNE()>SOMME(N(BASE!$A2:$H2<>0));"";INDEX(BASE!2:2;PETITE.VALEUR(SI(BASE!$A2:$H2<>0;COLONNE(BASE!$A2:$H2));COLONNE())))
A valider par Ctrl+Maj+Entrée et tirer vers la droite.

Les bordures sont créées par Mise en forme conditionnelle (MFC).

Fichier joint.

A+
 

Pièces jointes

Re : Copie ligne sans cellule vide

Bonjour à tous, Salut "Job75"

Je me permets de modifier un tantinet ta réponse pour éviter d'afficher également les valeurs "texte"

Code:
=SI(COLONNE()>SOMME(N(BASE!$A2:$H2>0));"";INDEX(BASE!2:2;PETITE.VALEUR(SI((BASE!$A2:$H2<>0)*(ESTNUM(BASE!$A2:$H2));COLONNE(BASE!$A2:$H2));COLONNE())))

Formule matricielle

JHA
 

Pièces jointes

Re : Copie ligne sans cellule vide

Merci les gars. Mais si ce n'est trop demandé Job75 pourrais tu apporté un peu d'explication sur ta formule.
 
Dernière modification par un modérateur:
Re : Copie ligne sans cellule vide

Re,

Il faut commencer par le centre.

Dans la barre de formule sélectionner SI(BASE!$A2:$H2<>0;COLONNE(BASE!$A2:$H2)) et appuyer sur F9.

On voit apparaître une matrice constituée de nombres (les n° de colonnes) et de FAUX.

Continuer avec PETITE.VALEUR(SI(BASE!$A2:$H2<>0;COLONNE(BASE!$A2:$H2));COLONNE())

PETITE.VALEUR recherche le n° de colonne correspondant au n° de la cellule en cours.

Enfin INDEX renvoie la valeur dont la position a été déterminée sur la ligne 2:2.

Tout ça est très classique, mais il faut avoir un peu compris le calcul matriciel...

A+
 
Re : Copie ligne sans cellule vide

Merci ..............

Mais j'ai remarqué quelque chose, quand je copie la formule en B2 et que je tire vers la droite, la premiere valeur n'apparait pas dans mon tableau
 
Dernière modification par un modérateur:
Re : Copie ligne sans cellule vide

Re,

Si l'on fait commencer le tableau en RESULTAT!B2 il faut remplacer COLONNE() par COLONNE()-1.

Ou par COLONNES($B:B) de manière à obtenir 1 en B2, 2 en C2...

Toujours du très classique.

Fichier (2).

A+
 

Pièces jointes

- 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
4
Affichages
214
Réponses
10
Affichages
584
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…