Remplacer une valeur inexistante par 0

bbobb

XLDnaute Occasionnel
Bonjour à tous,
Par macro, je recherche une donnée dans un tableau pour la copier dans un autre tableau. Si cette donnée n'existe pas, je voudrai inscrire 0 dans le second tableau.
Ci-dessous l'extrait de la macro.

Merci d'avance pour votre aide
Bbobb

' chercher le nombre de paiements en éspéces
Dim L As Long, C As Integer
Set Cel = Cells.Find("Total Nb paiements")
If Not Cel Is Nothing Then L = Cel.Row
Set Cel = Cells.Find("Espèces")
If Not Cel Is Nothing Then C = Cel.Column
If L > 0 And C > 0 Then Cells(L, C).Select

Cells(L, C).Copy
Windows("Chiffre d'affaire global.xls").Activate
ActiveSheet.Paste
 

Pierrot93

XLDnaute Barbatruc
Re : Remplacer une valeur inexistante par 0

Re,

une autre approche :
Code:
Dim cel As Range
Set Cel = Cells.Find("Total Nb paiements")
With Workbooks("Chiffre d'affaire global.xls").Sheets("NomFeuille")
        If Not cel Is Nothing Then cel.Copy .Range("B2") Else .Range("B2") = 0
End With

mais attention aux arguments de la méthode "find", ci-dessous extrait de l'aide vba :
Notes
Les paramètres des arguments LookIn, LookAt, SearchOrder et MatchByte sont enregistrés chaque fois que vous utilisez cette méthode. Si vous ne spécifiez aucun paramètre pour ces arguments lors du prochain appel de la méthode, les paramètres enregistrés sont utilisés. Le fait de définir les paramètres de ces arguments modifie les paramètres de la boîte de dialogue Rechercher, ce qui a pour effet de changer les paramètres enregistrés qui sont utilisés lorsque vous ne spécifiez pas les arguments. Pour éviter toute ambiguïté, définissez ces arguments de façon explicite chaque fois que vous utilisez cette méthode.

Edition : après tests, il est nécessaire d'indiquer la cellule de destination, activecell ne passe pas.... logique..
 
Dernière édition:

bbobb

XLDnaute Occasionnel
Re : Remplacer une valeur inexistante par 0

Bonjour Pierrot,
D'abord, merci pour ton aide.
Ensuite : ("Total Nb paiements") correspond à une ligne et ("Espèces") correspond à une colonne, est-ce que le code que tu me propose ci-dessus en tient compte ?

Merci
Bbobb
 

Pierrot93

XLDnaute Barbatruc
Re : Remplacer une valeur inexistante par 0

Re,

Ensuite : ("Total Nb paiements") correspond à une ligne et ("Espèces") correspond à une colonne, est-ce que le code que tu me propose ci-dessus en tient compte ?

non, pour moi c'est la chaine de caractères qui est recherchée, d'ailleurs c'est le 1er argument du find que tu utilises :
Code:
Set Cel = Cells.Find("Total Nb paiements")
 

bbobb

XLDnaute Occasionnel
Re : Remplacer une valeur inexistante par 0

Bonjour à tous,
Mon problème n'est pas résolu,
La valeur que je veux importer n'existe pas toujours. Lorsqu'elle existe il faut la copier/coller, lorsqu'elle n'existe pas, je veux que dans la cellule active soit inscrit 0.
Ci dessous la macro.
Merci d'avance pour votre aide
Bbobb

Dim L As Long, C As Integer
Set Cel = Cells.Find("Total Nb paiements")
If Not Cel Is Nothing Then L = Cel.Row
Set Cel = Cells.Find("Espèces")
If Not Cel Is Nothing Then C = Cel.Column
If L > 0 And C > 0 Then Cells(L, C).Copy
ActiveWindow.Close

Windows("Chiffre d'affaire global.xls").Activate
ActiveSheet.Paste
Selection.ClearContents
ActiveCell.FormulaR1C1 = "0"
 

bbobb

XLDnaute Occasionnel
Re : Remplacer une valeur inexistante par 0

Bonjour Pierrot,
Fichier ACT... il faut que je trouve la valeur qui correspond à la ligne "Total nb de paiement" et à la colonne "Especes".
La ligne et la colonne ne sont pas toujours au même endroit.
La colonne "especes" n'existe pas toujours.
Si elle existe il faut copier la valeur et la coller dans "Chiffre d'affaires globale"
Si elle n'existe pas il faut inscrire 0 dans "Chiffre d'affaire global"

J'espere que je suis plus clair...
@+
Bbobb
 

Pierrot93

XLDnaute Barbatruc
Re : Remplacer une valeur inexistante par 0

Re,

regarde ceci, en espérant que cela puisse t'aider à avancer...
Code:
Option Explicit
Sub test()
Dim cel1 As Range, cel2 As Range
Set cel1 = Cells.Find("DonneeRecherchée1", , xlValues, xlWhole, , , False)
Set cel2 = Cells.Find("DonneeRecherchée2", , xlValues, xlWhole, , , False)
If Not cel1 Is Nothing And Not cel2 Is Nothing Then
    Cells(cel1.Row, cel2.Column).Copy Destination:=Workbooks("nomclasseur.xls").Sheets("Tafeuilledest").Range("A1")
Else
    Workbooks("nomclasseur.xls").Sheets("nomfeuille").Range("A1").Value = 0
End If
End Sub
 

Fo_rum

XLDnaute Accro
Re : Remplacer une valeur inexistante par 0

Bonjour,

ou encore (?)
Code:
Option Explicit
Private Sub CommandButton1_Click() 'si bouton
    Dim Est As Range, Col As Byte, CaG As Single
    Set Est = Cells.Find("Especes")
    If Est Is Nothing Then
        CaG = 0
    Else
        Col = Est.Column
        Set Est = Cells.Find("Total nb de paiement")   'attention à la casse
        CaG = Cells(Est.Row, Col)
    End If
    Workbooks("Chiffre d'affaire global.xls").Activate 'fichier ouvert
    ActiveSheet.Range("A1") = CaG 'ou ailleurs
End Sub
 

bbobb

XLDnaute Occasionnel
Re : Remplacer une valeur inexistante par 0

Pierrot, Fo_rum,
Merci.
La dernière solution proposée par Fo_rum semble fonctionner, je teste en taille "réelle" et je revient vers le forum si nécessaire.
Merci encore pour votre aide
Bonne journée
Bbobb
 

bbobb

XLDnaute Occasionnel
Re : Remplacer une valeur inexistante par 0

Bonjour à tous,
Je reviens vers le forum concernant la formule ci-dessous.
Celle-ci fonctionne très bien à un détail près :
Dans un tableau il y a plusieurs cellules qui comprennent une phrase avec le mot "Espèces" mais une seule cellule qui contient le mot "Espèces" seul.
Peut-on rajouter un code à Set Est = Cells.Find("Especes") pour que soit selectionné la cellule qui ne contient que le mot "Espèces".

Merci d'avance pour votre aide
Bbobb

Bonjour,

ou encore (?)
Code:
Option Explicit
Private Sub CommandButton1_Click() 'si bouton
    Dim Est As Range, Col As Byte, CaG As Single
    Set Est = Cells.Find("Especes")
    If Est Is Nothing Then
        CaG = 0
    Else
        Col = Est.Column
        Set Est = Cells.Find("Total nb de paiement")   'attention à la casse
        CaG = Cells(Est.Row, Col)
    End If
    Workbooks("Chiffre d'affaire global.xls").Activate 'fichier ouvert
    ActiveSheet.Range("A1") = CaG 'ou ailleurs
End Sub
 

Discussions similaires

Réponses
2
Affichages
152

Membres actuellement en ligne

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 184
dernier inscrit
Di Martino