[Excel] Négation du Equiv
Résolu/Fermé
A voir également:
- [Excel] Négation du Equiv
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
- Déplacer une colonne excel - Guide
9 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
31 janv. 2011 à 16:57
31 janv. 2011 à 16:57
Bonjour
Excusez l'incruste
peut-être suffisant
Excusez l'incruste
vrai si NA If Sheets(feuille).Cells(ligne, colonne) = CVErr(xlErrNA) Then vrai si non NA If Not Sheets(feuille).Cells(ligne, colonne) = CVErr(xlErrNA) Then
peut-être suffisant
If IsError(Sheets(feuille).Cells(ligne, colonne)) Then If Not IsError(Sheets(feuille).Cells(ligne, colonne)) Then
Merci youha, mais J'ai des centaines de valeurs dans ma condition, le si ne suffirait pas... L'Equiv est limite... et ne peux donc pas être copié 2 fois. Je pensais a un script VBA...
Dim Ligne,Colonne as Integer Dim Feuille as String Feuille = ActiveSheet For Ligne = 1 to ActiveSheet.UsedRange.Rows.Count For Colonne = 1 to ActiveSheet.UsedRange.Column.Count If Sheets(Feuille).Cells(Ligne,Colonne) = "#NA" then Sheets(Feuille).Cells(Ligne,Colonne) = "Ce que tu veux" end if next colonne next ligne
Je pense que cela devrait faire l'affaire.
Merci Youha mais...
il me dit "Erreur 438 : Propriété ou méthode non gérée par cet objet"
qui renvoie à : Feuille = ActiveSheet
il me dit "Erreur 438 : Propriété ou méthode non gérée par cet objet"
qui renvoie à : Feuille = ActiveSheet
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Il me dit : Objet requis
If Sheets(Feuille).Cells(Ligne, colonne) = "#NA" Then
et quand j'enlève la colonne et que je met 1 :
If Sheets(Feuille).Cells(Ligne,1) = "#NA" then
il me dit : l'indice n'appartient pas a la selection .
If Sheets(Feuille).Cells(Ligne, colonne) = "#NA" Then
et quand j'enlève la colonne et que je met 1 :
If Sheets(Feuille).Cells(Ligne,1) = "#NA" then
il me dit : l'indice n'appartient pas a la selection .
On va faire autrement.
Dim Ligne,Colonne as Integer Dim Feuille as String Feuille = "Le Nom de Ta Feuille" For Ligne = 1 to ActiveSheet.UsedRange.Rows.Count For Colonne = 1 to ActiveSheet.UsedRange.Column.Count If Sheets(Feuille).Cells(Ligne,Colonne) = "#NA" then Sheets(Feuille).Cells(Ligne,Colonne) = "Ce que tu veux" end if next colonne next ligne
Merci, mais il me dit toujours "objet requis" :
For Colonne = 1 to ActiveSheet.UsedRange.Column.Count
j'ai Office Excel 2000...
For Colonne = 1 to ActiveSheet.UsedRange.Column.Count
j'ai Office Excel 2000...
Ah ok, Excel 2000 (c'est très loin ça).
Je vais te donner une liste à essayer parce que je n'ai pas Excel 2000 (et j'ai jamais eu l'occasion de travailler dessus).
Essaye avec ça
Sheets("Le Nom de Ta Feuille").Cells.Find("*", , , , xlByColumns, xlPrevious).Column
Ce que fait ActiveSheet.UsedRange.Column.Count, c'est te trouver l'indice de la dernière colonne non nulle. Donc au pire, tu le vires tu ajoutes l'indice de cette colonne.
Sinon je suis en train de me dire un truc tout con. Tu peux pas faire une Recherche (Ctrl + F) et cliquer sur "Remplacer tout" ?
Je vais te donner une liste à essayer parce que je n'ai pas Excel 2000 (et j'ai jamais eu l'occasion de travailler dessus).
Essaye avec ça
Sheets("Le Nom de Ta Feuille").Cells.Find("*", , , , xlByColumns, xlPrevious).Column
Ce que fait ActiveSheet.UsedRange.Column.Count, c'est te trouver l'indice de la dernière colonne non nulle. Donc au pire, tu le vires tu ajoutes l'indice de cette colonne.
Sinon je suis en train de me dire un truc tout con. Tu peux pas faire une Recherche (Ctrl + F) et cliquer sur "Remplacer tout" ?
ça a l'air de marcher ta méthode... Mais il me met l'erreur "incompatibilité de type... à If Sheets(Feuille).Cells(Ligne, Colonne) = "#NA" Then
mais Même lorsque je fais un truc Bidon du genre j'ai "incompatibilité de type :
If sheets(feuil1).cells(1,1) = 1 then
sheets(feuil1).cells(1,1) = 2
end if
Je dois être vraiment fatigué ^^. Et non je ne peux pas faire "recherche", puisque après je met ça dans un bouton qui fait beaucoup de choses automatiquement.
mais Même lorsque je fais un truc Bidon du genre j'ai "incompatibilité de type :
If sheets(feuil1).cells(1,1) = 1 then
sheets(feuil1).cells(1,1) = 2
end if
Je dois être vraiment fatigué ^^. Et non je ne peux pas faire "recherche", puisque après je met ça dans un bouton qui fait beaucoup de choses automatiquement.
c'est vrai le value... Donc ça donne ?
ça marche pour la 1ère colonne ^^... Après ça me met : "Objet requis". encore pour For Colonne = 1 To Sheets("Feuil1").Cells.Value.Find("*", , , , xlByColumns, xlPrevious).Column...
Au pire je remplace la colonne par un chiffre c'est pas grave :). Les lignes c'est le plus important. Merci de ton aide !
Private Sub CommandButton1_Click()
Dim Ligne, Colonne As Integer
Dim Feuille As String
Feuille = "Feuil1"
For Ligne = 1 To ActiveSheet.UsedRange.Rows.Count
For Colonne = 1 To Sheets("Feuil1").Cells.Value.Find("*", , , , xlByColumns, xlPrevious).Column
If Sheets(Feuille).Cells(Ligne, Colonne).Value = "#NA" Then
Sheets(Feuille).Cells(Ligne, Colonne).Value = "Ce que tu veux"
End If
Next Colonne
Next Ligne
End Sub
ça marche pour la 1ère colonne ^^... Après ça me met : "Objet requis". encore pour For Colonne = 1 To Sheets("Feuil1").Cells.Value.Find("*", , , , xlByColumns, xlPrevious).Column...
Au pire je remplace la colonne par un chiffre c'est pas grave :). Les lignes c'est le plus important. Merci de ton aide !
Private Sub CommandButton1_Click()
Dim Ligne, Colonne As Integer
Dim Feuille As String
Feuille = "Feuil1"
For Ligne = 1 To ActiveSheet.UsedRange.Rows.Count
For Colonne = 1 To Sheets("Feuil1").Cells.Value.Find("*", , , , xlByColumns, xlPrevious).Column
If Sheets(Feuille).Cells(Ligne, Colonne).Value = "#NA" Then
Sheets(Feuille).Cells(Ligne, Colonne).Value = "Ce que tu veux"
End If
Next Colonne
Next Ligne
End Sub
J'ai un collègue qui me dit que tu de passer par une variable intermédiaire, cela pourrait fonctionner.
Donc ce serait :
Dim DerniereColonne as Integer
DerniereColonne = For Colonne = 1 To Sheets("Feuil1").Cells.Value.Find("*", , , ,xlByColumns, xlPrevious).Column
(Et puis comme ça tu peux voir la valeur qu'aura DerniereColonne)
Donc ce serait :
Dim DerniereColonne as Integer
DerniereColonne = For Colonne = 1 To Sheets("Feuil1").Cells.Value.Find("*", , , ,xlByColumns, xlPrevious).Column
(Et puis comme ça tu peux voir la valeur qu'aura DerniereColonne)
Après de nombreux tests , il m'aura simplement fallut :
If IsError(Sheets(feuille).Cells(ligne, colonne)) Then
If Not IsError(Sheets(feuille).Cells(ligne, colonne)) Then
Combinée à la boucle...
L'inconvénient du CVErr(xlErrNA) était qu'il me mettait une erreur de type dès qu'il ne lisait pas une erreur.
Et l'inconvénient du If Sheets(Feuille).Cells(Ligne, Colonne).Value = "#N/A"
est qu'il ne me mettait jamais d'erreur quand il y en avait et il me mettait une erreur de type puisqu'il ne lit pas les erreurs.
Merci à vous 2.
If IsError(Sheets(feuille).Cells(ligne, colonne)) Then
If Not IsError(Sheets(feuille).Cells(ligne, colonne)) Then
Combinée à la boucle...
L'inconvénient du CVErr(xlErrNA) était qu'il me mettait une erreur de type dès qu'il ne lisait pas une erreur.
Et l'inconvénient du If Sheets(Feuille).Cells(Ligne, Colonne).Value = "#N/A"
est qu'il ne me mettait jamais d'erreur quand il y en avait et il me mettait une erreur de type puisqu'il ne lit pas les erreurs.
Merci à vous 2.