Formule:si cell vide...
Fermé
loulou
-
8 juin 2011 à 10:20
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 8 juin 2011 à 16:52
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 8 juin 2011 à 16:52
A voir également:
- Formule:si cell vide...
- Formule si et - Guide
- Formule somme excel colonne - Guide
- Formule excel moyenne - Guide
- Excel mise en forme conditionnelle formule - Guide
- Formule - Télécharger - Études & Formations
10 réponses
Christof422
Messages postés
871
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
212
8 juin 2011 à 10:32
8 juin 2011 à 10:32
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 ?
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 256
Modifié par eriiic le 8/06/2011 à 10:54
Modifié par eriiic le 8/06/2011 à 10:54
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 256
8 juin 2011 à 13:57
8 juin 2011 à 13:57
oui, il y avait une petite erreur, j'avais corrigé le post mais pas le code du classeur.
If Cells(lig, 17) <> "" Then
corrigé en
If Cells(lig, 22) <> "" Then
dans la 2nde partie
eric
If Cells(lig, 17) <> "" Then
corrigé en
If Cells(lig, 22) <> "" Then
dans la 2nde partie
eric
Christof422
Messages postés
871
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
212
8 juin 2011 à 10:55
8 juin 2011 à 10:55
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.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 256
8 juin 2011 à 10:56
8 juin 2011 à 10:56
déjà fait au post 4, on s'est croisé...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Christof422
Messages postés
871
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
212
8 juin 2011 à 11:05
8 juin 2011 à 11:05
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
A coller dans une maccro
Christof422
Messages postés
871
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
212
8 juin 2011 à 14:23
8 juin 2011 à 14:23
il faut remplacer 16 par 21
17 par 22
18 par 23
17 par 22
18 par 23
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
Christof422
Messages postés
871
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
212
8 juin 2011 à 16:05
8 juin 2011 à 16:05
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
Christof422
Messages postés
871
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
212
Modifié par Christof422 le 8/06/2011 à 16:16
Modifié par Christof422 le 8/06/2011 à 16:16
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é...
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
Modifié par michel_m le 9/06/2011 à 06:18
Modifié par michel_m le 9/06/2011 à 06:18
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
Ctesias
Messages postés
724
Date d'inscription
lundi 16 mai 2011
Statut
Membre
Dernière intervention
1 décembre 2011
36
Modifié par Ctesias le 8/06/2011 à 10:36
Modifié par Ctesias le 8/06/2011 à 10:36
Moi j'ai trouvé!
Voila...
Une cellule vide n'a pas de valeur..
Code :
Voila...
Une cellule vide n'a pas de valeur..