Formule:si cell vide...
loulou
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Hello,
Auriez vous la gentillesse de m'aider sur la création d'une formule telle que ci dessous:
Pour toutes les cases vides de la colonne P (et uniquement si elles sont vides), reporter la valeur de la meme ligne, colonne Q.
Si colonne Q également vide, reporter (toujours sur la ligne de la colonne P) la valeur de la ligne, colonne R
Puis, Pour toutes les cases vides de la colonne U (et uniquement si elles sont vides), reporter la valeur de la meme ligne, colonne V.
Si colonne V également vide, reporter (toujours sur la ligne de la colonne P) la valeur de la ligne, colonne W.
Merci beaucoup !
Auriez vous la gentillesse de m'aider sur la création d'une formule telle que ci dessous:
Pour toutes les cases vides de la colonne P (et uniquement si elles sont vides), reporter la valeur de la meme ligne, colonne Q.
Si colonne Q également vide, reporter (toujours sur la ligne de la colonne P) la valeur de la ligne, colonne R
Puis, Pour toutes les cases vides de la colonne U (et uniquement si elles sont vides), reporter la valeur de la meme ligne, colonne V.
Si colonne V également vide, reporter (toujours sur la ligne de la colonne P) la valeur de la ligne, colonne W.
Merci beaucoup !
A voir également:
- Formule:si cell vide...
- Formule si ou - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Formule somme excel ligne - Guide
- Mise en forme conditionnelle excel formule - Guide
10 réponses
Reporter la valeur de quoi? si la case est vide il n'y a pas de valeur j'ai pas bien saisi.
Sur combien de ligne il faut faire ca?
Tu travaille sur excel?
Sur combien de ligne il faut faire ca?
Tu travaille sur excel?
Alors, je vais essayer d'être plus clair:
Si, sur une ligne, la cellule de la colonne P est vide (et seulement si la cellule est vide), je voudrais remplacer ce vide par la valeur qui est indiquée sur la même ligne, colonne Q.
Mais si la colonne Q est vide également, alors reporter en P la valeur de la meme ligne, colonne R.
Mais si Q et R sont vides également, alors laisser P vide.
Et appliquer ça sur toutes les lignes vides de la colonne P.
(en mettant une limite à 50 000 lignes pour éviter que ce soit trop long)
Est ce plus clair ?
Si, sur une ligne, la cellule de la colonne P est vide (et seulement si la cellule est vide), je voudrais remplacer ce vide par la valeur qui est indiquée sur la même ligne, colonne Q.
Mais si la colonne Q est vide également, alors reporter en P la valeur de la meme ligne, colonne R.
Mais si Q et R sont vides également, alors laisser P vide.
Et appliquer ça sur toutes les lignes vides de la colonne P.
(en mettant une limite à 50 000 lignes pour éviter que ce soit trop long)
Est ce plus clair ?
Bonjour,
Ca devrait le faire :
http://www.cijoint.fr/cjlink.php?file=cj201106/cijlSa0kOD.xls
eric
Ca devrait le faire :
Sub remplir()
Dim lig As Long, derlig As Long
derlig = WorksheetFunction.Max([Q65536].End(xlUp).Row, [R65536].End(xlUp).Row, [V65536].End(xlUp).Row, [W65536].End(xlUp).Row)
Application.ScreenUpdating = False
For lig = 2 To derlig
If Cells(lig, 16) = "" Then
If Cells(lig, 17) <> "" Then
Cells(lig, 16) = Cells(lig, 17)
Else
Cells(lig, 16) = Cells(lig, 18)
End If
End If
If Cells(lig, 21) = "" Then
If Cells(lig, 22) <> "" Then
Cells(lig, 21) = Cells(lig, 22)
Else
Cells(lig, 21) = Cells(lig, 23)
End If
End If
Next lig
Application.ScreenUpdating = True
End Sub
http://www.cijoint.fr/cjlink.php?file=cj201106/cijlSa0kOD.xls
eric
oui beaucoup plus clair. enfin 50000 ca fais beaucoup^^ surtout du 65000 que contient un classeur excel.
Enfin je vais essayer de pondre un bout de code.
Enfin je vais essayer de pondre un bout de code.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionFor i = 1 To 20000 If Cells(i, 16) = "" Then If Cells(i, 17) <> "" Then Cells(i, 16) = Cells(i, 17) ElseIf Cells(i, 18) <> "" Then Cells(i, 16) = Cells(i, 18) End If End If Next i
A coller dans une maccro
Public Sub QRinP()
For i = 1 To 20000
If Cells(i, 16) = "" Then
If Cells(i, 17) <> "" Then
Cells(i, 16) = Cells(i, 17)
ElseIf Cells(i, 18) <> "" Then
Cells(i, 16) = Cells(i, 18)
End If
End If
Next i
End Sub
Public Sub VWinU()
For i = 1 To 20000
If Cells(i, 19) = "" Then
If Cells(i, 20) <> "" Then
Cells(i, 19) = Cells(i, 20)
ElseIf Cells(i, 21) <> "" Then
Cells(i, 19) = Cells(i, 20)
End If
End If
Next i
End Sub
For i = 1 To 20000
If Cells(i, 16) = "" Then
If Cells(i, 17) <> "" Then
Cells(i, 16) = Cells(i, 17)
ElseIf Cells(i, 18) <> "" Then
Cells(i, 16) = Cells(i, 18)
End If
End If
Next i
End Sub
Public Sub VWinU()
For i = 1 To 20000
If Cells(i, 19) = "" Then
If Cells(i, 20) <> "" Then
Cells(i, 19) = Cells(i, 20)
ElseIf Cells(i, 21) <> "" Then
Cells(i, 19) = Cells(i, 20)
End If
End If
Next i
End Sub
C'est génial, ça fonctionne, merci !!
Serait ce abusé de vous demander :
Une fois les éléments reportés dans les cases U et P,
Je souhaite:
Si la case U et/ou la case P n'est pas vide, sur la meme ligne, indiquer en colonne AA "Customer Contacted"
Si les cases U ET P sont vides, laisser la case de la colonne AA vide
Serait ce abusé de vous demander :
Une fois les éléments reportés dans les cases U et P,
Je souhaite:
Si la case U et/ou la case P n'est pas vide, sur la meme ligne, indiquer en colonne AA "Customer Contacted"
Si les cases U ET P sont vides, laisser la case de la colonne AA vide
For i = 1 To 20000
If Cells(i, 16) = "" Then
If Cells(i, 17) <> "" Then
Cells(i, 16) = Cells(i, 17)
ElseIf Cells(i, 18) <> "" Then
Cells(i, 16) = Cells(i, 18)
End If
End If
If Cells(i, 21) = "" Then
If Cells(i, 22) <> "" Then
Cells(i, 21) = Cells(i, 22)
ElseIf Cells(i, 23) <> "" Then
Cells(i, 21) = Cells(i, 23)
End If
End If
if cells(i,16)<>"" then
cells(i,27)="Customer Contacted"
end if
if cells(i,21)<>"" then
cells(i,27)="Customer Contacted"
end if
Next i
If Cells(i, 16) = "" Then
If Cells(i, 17) <> "" Then
Cells(i, 16) = Cells(i, 17)
ElseIf Cells(i, 18) <> "" Then
Cells(i, 16) = Cells(i, 18)
End If
End If
If Cells(i, 21) = "" Then
If Cells(i, 22) <> "" Then
Cells(i, 21) = Cells(i, 22)
ElseIf Cells(i, 23) <> "" Then
Cells(i, 21) = Cells(i, 23)
End If
End If
if cells(i,16)<>"" then
cells(i,27)="Customer Contacted"
end if
if cells(i,21)<>"" then
cells(i,27)="Customer Contacted"
end if
Next i
Voila tu copies ca dans une maccro et l'affecte a un bouton pour la lancer (cela devrait faire tout ce que tu veux depuis le debut :) ):
non vérifié...
For i = 1 To 20000 If Cells(i, 16) = "" Then If Cells(i, 17) <> "" Then Cells(i, 16) = Cells(i, 17) ElseIf Cells(i, 18) <> "" Then Cells(i, 16) = Cells(i, 18) End If End If If Cells(i, 21) = "" Then If Cells(i, 22) <> "" Then Cells(i, 21) = Cells(i, 22) ElseIf Cells(i, 23) <> "" Then Cells(i, 21) = Cells(i, 23) End If End If if cells(i,16)<>"" then cells(i,27)="Customer Contacted" end if if cells(i,21)<>"" then cells(i,27)="Customer Contacted" end if Next i
non vérifié...
Bonjour
Excusez l'incruste
Peut-être + rapide
Michel
Excusez l'incruste
Peut-être + rapide
Option Explicit
Const lig_dep As Byte = 2 'ligne départ
Sub siQZ_pasvide()
Dim derlig As Long, fin As Long, lig As Long
'initialisations
derlig = Range("Q" & lig_dep - 1 & ":W50000").Find("*", , , , xlPrevious).Row
fin = derlig - lig_dep + 1
ReDim T_colp(1 To fin)
ReDim T_colaa(1 To fin)
'lecture et rangement
For lig = lig_dep To derlig
If Application.CountA(Range(Cells(lig, "Q"), Cells(lig, "W"))) > 0 AND cells(lig,"P")<>"" Then
T_colp(lig - 1) = Cells(lig, Rows(lig).Find("*", Cells(lig, "P")).Column)
T_colaa(lig - 1) = "Customer Contacted"
End If
Next
'restitution
Application.ScreenUpdating = False
Cells(lig_dep, "P").Resize(fin, 1) = Application.Transpose(T_colp)
Cells(lig_dep, "AA").Resize(fin, 1) = Application.Transpose(T_colaa)
End Sub
Michel