Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1595 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Aide VBA : Copier des cellules non vides ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide VBA : Copier des cellules non vides ...

n°2038825
smilo
Posté le 27-11-2010 à 17:28:59  profilanswer
 

Bonjour à tous!
 
Je débute en VBA, et je suis face à un petit problème prise de tête.  
 
J'ai une colonne avec un certain de cellules vides et non vides, du type :  
 
A1:
A2: TOTO
A3:
A4: TITI
A5: TUTU
A6:
A7: TATA
 
Mon objectif est générer un Sub permettant de reporter les cellules non vides l'une en dessous de l'autre dans une autre colonne, du type :
 
B1: TOTO
B2: TITI
B3: TUTU
B4: TATA
B5:
B6:
B7:
 
Ci dessous le code que j'ai réalisé :  
 
Sub Report()
'Range([H15], [H55].End(xlDown)).Select
    For Each cell In Selection
        If cell.value <> "" Then
            For i = 15 To Range("H15" ).End(xlDown).Row
            Cells(i, 9).value = cell.value
        Next
        End If
    Next cell
End Sub
 
Le souci c'est que ce code me donne un résultat du type :  
(Il balaye toute la colonne, et ajoute la dernière valeur balayer sur toutes les lignes...)
 
B1: TATA
B2: TATA
B3: TATA
B4: TATA
B5: TATA
B6: TATA
B7: TATA
 
Si vous avez une idée ?? Un grand merci par avance !! :D

mood
Publicité
Posté le 27-11-2010 à 17:28:59  profilanswer
 

n°2038855
kiki29
Posté le 28-11-2010 à 05:53:44  profilanswer
 

Salut,

Option Explicit
 
Sub Tst1()
Dim LastRowA As Long
Dim i As Long, j As Long
    LastRowA = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
    j = 1
 
    Application.ScreenUpdating = False
    Feuil1.Columns("B:B" ).ClearContents
    For i = 1 To LastRowA
        If Feuil1.Cells(i, 1) <> "" Then
            Feuil1.Cells(j, 2) = Feuil1.Cells(i, 1)
            j = j + 1
        End If
    Next i
    Application.ScreenUpdating = True
End Sub
 
Sub Tst2()
Dim LastRowA As Long, cA As Range
Dim i As Long
    LastRowA = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
    i = 1
 
    Application.ScreenUpdating = False
    Feuil1.Columns("B:B" ).ClearContents
    For Each cA In Feuil1.Range("A1:A" & LastRowA)
        If cA.Value <> "" Then
            Feuil1.Cells(i, 2) = cA.Value
            i = i + 1
        End If
    Next cA
    Application.ScreenUpdating = True
End Sub
 
Sub Tst3()
Dim LastRowA As Long
    Application.ScreenUpdating = False
    Feuil1.Columns("B:B" ).ClearContents
    LastRowA = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
    With Feuil1
        .Range("A1:A" & LastRowA).AutoFilter Field:=1, Criteria1:="<>"
        .Range("A1:A" & LastRowA).Copy .Range("B1" )
        .Range("A1:A" & LastRowA).AutoFilter
    End With
    Application.ScreenUpdating = True
End Sub


Message édité par kiki29 le 28-11-2010 à 08:36:06
n°2038861
smilo
Posté le 28-11-2010 à 10:06:09  profilanswer
 

J'ai revu le premier Sub, je n'avais pas penser à incrementer d'une autre façon! It's working! Merci!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Aide VBA : Copier des cellules non vides ...

 

Sujets relatifs
[HELP] Aide sur la création d'un batch moyennement complexeVBA Fermer plusieurs applications EXCEL en cascade (taskkill?)
Parcourir une image à l'aide d'une imagetteTaille max de tableau en VBA
Copier la ligne sélectionnée dans 1 ligne vide d'une autre feuilleAide vba : Comparer deux colonnes A et B et ajouter à B ce qu'il manqu
[VBA/ACCESS07] BDD vérouillée[VBA]Supprimer les lignes identiques rapidement...
Incompatibilité de type Erreur 13 VBACreer une macro pour sommer plusieurs cellules de plusieurs feuilles
Plus de sujets relatifs à : Aide VBA : Copier des cellules non vides ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR