Vérifier valeur dans 2 colonnes pour sélection c/c
Résolu
WhiteCthulhu
-
WhiteCthulhu -
WhiteCthulhu -
Bonjour à tous,
Je cherche à rentrer un code permettant de ne copier/coller que les lignes d'un tableau dont les valeurs en colonnes 1 et/ou 2 ne sont pas vide.
Voici le code, je sais qu'il n'est pas propre ni efficace étant donné que c'est un mix entre de la macro auto, du code récupéré à droite à gauche et une dose d'initiative personnelle (inutile de préciser que je suis une buse en VBA!)
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("TEMPPASTE").Activate ' feuille de destination
Col = "Y" 'colonne de la donnée non vide à tester
Col2 = "AA" 'colonne de la donnée non vide à tester
NumLig = 1 'espace volontaire en haut de feuille
With Sheets("Feuil1") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
NbrLig = .Cells(65536, Col2).End(xlUp).Row
For Lig = 15 To NbrLig
If .Cells(Lig, Col).Value <> "" Or .Cells(Lig, Col2).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
Cells(NumLig, 2).Select
ActiveSheet.Paste
End if
J'attends vos réactions horrifiées et peut être une réponse pouvant m'aider ;)
Merci
Je cherche à rentrer un code permettant de ne copier/coller que les lignes d'un tableau dont les valeurs en colonnes 1 et/ou 2 ne sont pas vide.
Voici le code, je sais qu'il n'est pas propre ni efficace étant donné que c'est un mix entre de la macro auto, du code récupéré à droite à gauche et une dose d'initiative personnelle (inutile de préciser que je suis une buse en VBA!)
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("TEMPPASTE").Activate ' feuille de destination
Col = "Y" 'colonne de la donnée non vide à tester
Col2 = "AA" 'colonne de la donnée non vide à tester
NumLig = 1 'espace volontaire en haut de feuille
With Sheets("Feuil1") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
NbrLig = .Cells(65536, Col2).End(xlUp).Row
For Lig = 15 To NbrLig
If .Cells(Lig, Col).Value <> "" Or .Cells(Lig, Col2).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
Cells(NumLig, 2).Select
ActiveSheet.Paste
End if
J'attends vos réactions horrifiées et peut être une réponse pouvant m'aider ;)
Merci
A voir également:
- Vérifier valeur dans 2 colonnes pour sélection c/c
- Faire 2 colonnes sur word - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Verifier compatibilite windows 11 - Guide
- Verifier un lien - Guide
2 réponses
bonjour,
essayez :
sub copiercoller
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("TEMPPASTE").Activate ' feuille de destination
destination=activesheet.name
Sheets("Feuil1").select
source = activesheet.name
Col = "Y" 'colonne de la donnée non vide à tester
Col2 = "AA" 'colonne de la donnée non vide à tester
NumLig = 2 'espace volontaire en haut de feuille
lig=15
do while cells(lig,col) <> "" or cells(lig,col2)<>""
If sheets(source).Cells(Lig, Col).Value <> "" Or sheets(source).Cells(Lig, Col2).Value <> "" Then
sheets(source).Cells(Lig, Col).EntireRow.Copy sheets(destination).Cells(NumLig, 1)
NumLig = NumLig + 1
End if
lig=lig+1
loop
end sub
essayez :
sub copiercoller
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("TEMPPASTE").Activate ' feuille de destination
destination=activesheet.name
Sheets("Feuil1").select
source = activesheet.name
Col = "Y" 'colonne de la donnée non vide à tester
Col2 = "AA" 'colonne de la donnée non vide à tester
NumLig = 2 'espace volontaire en haut de feuille
lig=15
do while cells(lig,col) <> "" or cells(lig,col2)<>""
If sheets(source).Cells(Lig, Col).Value <> "" Or sheets(source).Cells(Lig, Col2).Value <> "" Then
sheets(source).Cells(Lig, Col).EntireRow.Copy sheets(destination).Cells(NumLig, 1)
NumLig = NumLig + 1
End if
lig=lig+1
loop
end sub
Bonjour,
essaie ca :
sub copiercoller
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("TEMPPASTE").Activate ' feuille de destination
destination=activesheet.name
Sheets("Feuil1").select
source = activesheet.name
Col = "Y" 'colonne de la donnée non vide à tester
Col2 = "AA" 'colonne de la donnée non vide à tester
NumLig = 2 'espace volontaire en haut de feuille
NbrLig = sheets(source).Cells(65536, Col).End(xlUp).Row
NbrLig = sheets(source).Cells(65536, Col2).End(xlUp).Row
For Lig = 15 To NbrLig
If sheets(source).Cells(Lig, Col).Value <> "" Or sheets(source).Cells(Lig, Col2).Value <> "" Then
sheets(source).Cells(Lig, Col).EntireRow.Copy sheets(destination).Cells(NumLig, 1)
NumLig = NumLig + 1
End if
next
end sub
essaie ca :
sub copiercoller
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("TEMPPASTE").Activate ' feuille de destination
destination=activesheet.name
Sheets("Feuil1").select
source = activesheet.name
Col = "Y" 'colonne de la donnée non vide à tester
Col2 = "AA" 'colonne de la donnée non vide à tester
NumLig = 2 'espace volontaire en haut de feuille
NbrLig = sheets(source).Cells(65536, Col).End(xlUp).Row
NbrLig = sheets(source).Cells(65536, Col2).End(xlUp).Row
For Lig = 15 To NbrLig
If sheets(source).Cells(Lig, Col).Value <> "" Or sheets(source).Cells(Lig, Col2).Value <> "" Then
sheets(source).Cells(Lig, Col).EntireRow.Copy sheets(destination).Cells(NumLig, 1)
NumLig = NumLig + 1
End if
next
end sub
Bonne journée, vous avez fait la mienne ;)
Lig = 15 ==> ca c'est une variable
do while cells(lig,col) <> "" or cells(lig,col2)<>""
==> tant que la cellule de la ligne lig et colonne col <> "" (contient une donnée) ou que la cellule de la ligne lig et colonne col2 <>"" (contient une donnée)
on exécute le code
lig=lig+1 ==> passage à la ligne suivante
loop ==> ferme la boucle de do while
Le code ne marche que si j'ai une valeur sur ma première ligne et que le reste des valeurs se suivent de lignes en lignes sans zone vide.