Copie du contenu d'une colonne sur les cases vides d'une autre
Bonjour,
Dans le cadre d'une recherche, je fais des imputations par la moyenne sur mes données manquantes. J'ai un jeu de données contenant les réponses à différents questionnaires, qui contiennent un certain nombre d'items chacun. Pour chaque questionnaire, j'ai créé une colonne Moyenne, qui contient la moyenne des items répondus par le participant. Pour chaque item du questionnaire, je filtre les réponses vides et je copie le contenu de la case de la colonne moyenne qui correspond à ma case vide. Même si j'arrive à remplacer d'un coup toutes les cases vides de ma colonne actuellement, je dois répéter cette manip pour chaque item, et j'en ai des dizaines, alors que la colonne moyenne ne change pas, donc ce qui est copié par participant ne change jamais.
Auriez-vous un moyen de copier la valeur contenue dans ma colonne moyenne sur tous les items vides de mes participants ? Cela me ferait gagner énormément de temps.
Merci d'avance, n'hésitez pas à me dire si ce n'est pas clair ou si il y a besoin de screens.
Hello,
perso je n'ai rien compris, mais un fichier joint avec un exemple du résultat serait certainement plus facile à comprendre
Par exemple, sur le fichier joint, je souhaite copier le contenu de la colonne NW sur les colonnes MW à NV
Re,
pour ce que j'en ai compris, un premier jet... a vérifier et adapter
Option Explicit
Sub Copie_du_contenu_d_une_colonne_sur_les_cases_vides_d_une_autre()
' *** A adapter ***
Const Col_Debut As String = "MW"
Const Col_Fin As String = "NW" ' colonne à copier
Const Lig_Debut As Long = 2
' *** A adapter ***
Dim Plage_Source As String
Dim Cellule_Donnees As Range
Dim Plage_Cible As Range
Dim Cellule_Cible As Range
Dim Lig_Fin As Long
Lig_Fin = Cells(Rows.Count, Col_Fin).End(xlUp).Row
Plage_Source = Col_Fin & Lig_Debut & ":" & Col_Fin & Lig_Fin
For Each Cellule_Donnees In Range(Plage_Source).SpecialCells(xlCellTypeVisible)
Set Plage_Cible = Range(Cellule_Donnees.Offset(0, -1), Cellule_Donnees.Offset(0, -26)) ' Plage MW à NV
For Each Cellule_Cible In Plage_Cible
If IsEmpty(Cellule_Cible.Value) Then
Cellule_Cible.Value = Cellule_Donnees.Value
End If
Next Cellule_Cible
Next Cellule_Donnees
End Sub
Sub ColorEmptyCells()
Dim cell As Range
Dim targetRange As Range
' Définissez la plage de cellules à vérifier
Set targetRange = Range("MW2:NV625")
' Parcourez chaque cellule dans la plage spécifiée
For Each cell In targetRange
' Si la cellule est vide
If IsEmpty(cell.Value) Then
' Coloriez l'intérieur de la cellule (ici, jaune clair)
cell.Interior.Color = RGB(255, 255, 153)
Else
' Supprimez la couleur si elle n'est pas vide
cell.Interior.ColorIndex = xlNone
End If
Next cell
End Sub