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

macro et formule

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

marleauc

XLDnaute Occasionnel
bonjour,
J'ai trouver dans le site une formule qui fonctionne a merveille, par contre j'aimerais y ajouter de tranférer seulement les cellules remplie (non-vide). j'ai aune idée !

merci
Sub VALIDER()
Sheets("Matrice").Select
Range("A7:AB21").Select
Selection.Copy
Sheets("BD").Select
NewLig = Range("A65536").End(xlUp).Offset(1, 0).Row
Range("A" & NewLig).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
 
Re : macro et formule

Bonjour Marleauc, bonjour le forum,

Une proposition :

Code:
Sub VALIDER()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (DESTination)
 
For Each cel In Sheets("Matrice").Range("A7:AB21") 'boucles sur toutes les cellules de la plage A7:AB21
    If cel.Value <> "" Then 'condition : si la cellule n'est pas vide
        Set dest = Sheets("BD").Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable dest
        cel.Copy 'copie la cellule cel
        'collage spécial dans dest
        dest.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
    End If 'fin de la condition
Next cel 'prochaine cellule de la plage
End Sub
 
Re : macro et formule

Bonsoir Marleau, bonsoir le forum,

En effet, j'avais lu trop rapidement et le code que je te proposais plaçait toutes les valeurs en colonne A.

En voici un nouveau qui j'espère te conviendra :

Code:
Sub macro1()
Dim tablo() As Variant 'déclare le tableau de variables tablo
Dim dest As Range 'déclare la variable dest (DESTination)
Dim x As Byte, y As Byte 'déclare les variable x et y
 
Sheets("Matrice").Range("A7:AB21").Copy 'copie la plage A7:AB21
'collage spécial
Sheets("BD").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.ClearContents 'efface le contenu de la plage
Set dest = ActiveCell 'définit la variable del
dest.Select 'sélectionne la cellule dest
x = 0 'définit l avariable x
y = 0 'définit l avariable y
For Each cel In Sheets("Matrice").Range("A7:AB21") 'boucle sur toutes le cellules de la plage A7:AB21 de l'onglet "Matrice"
    If y > 27 Then 'condition 1 : si y est supérieur à 27
        y = 0 'y se réinitialise à zéro
        x = x + 1 'x s'incrémente de 1
    End If 'fin de la condition 1
    If cel.Value <> "" Then 'condition 2 : si la cellule cel n'est pas vide
        ReDim tablo(x, y) 'redimensionne le tableau de variable tablo en fonction de x et de y
        tablo(x, y) = cel.Value 'attribue une valeur à la variable indexée (x,y)
        dest.Offset(x, y).Value = tablo(x, y) 'place cette valeur dans l'onglet "BD"
        y = y + 1 'redéfinit la variable y
    End If 'fin de la condition 2
Next cel 'prochaine cellule de la boucle
End Sub
 
- 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

Réponses
18
Affichages
600
Réponses
10
Affichages
796
Réponses
2
Affichages
401
Réponses
17
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…