Copie de lignes avec variantes et conditions

Geinoch

XLDnaute Occasionnel
Bonjour,
J'ai besoin d'aide pour paufiner cette commande. Je dois faire un bouton qui copie des cellules d'une ligne vers une autre feuille.

Variante, si la valeur de "A, la ligne copié" est semblable à une des valeurs de la colonne "B, de l'autre feuille" cette cellule ne se copie pas (mais les autres oui) et une ligne en dessous

Pour le moment j'ai cette commande (qui ne met pas la ligne en dessous), mais qui essait de faire ce que j'ai décrit au début, et qui ne réussit pas. Elle ne fait que copier la ligne complète sans prendre compte du IF

Help me =(

Private Sub CMDsend_Click()

Dim numligne As Long
numligne = Sheets("Global").Range("B65536").End(xlUp).Row
lignefin = Range("r65536").End(xlUp).Row
If Sheets("global").Range("B" & "B65536") = Cells(lignefin, 1) Then
Sheets("Global").Range("A" & numligne).EntireRow.Insert
Sheets("Global").Range("D" & numligne) = Cells(lignefin, 2) & " " & Cells(lignefin, 3)
Sheets("Global").Range("E" & numligne) = Cells(lignefin, 4)
Sheets("Global").Range("F" & numligne) = Cells(lignefin, 13)
Sheets("Global").Range("G" & numligne) = Cells(lignefin, 14)
Sheets("Global").Range("C" & numligne) = Cells(3, 18)
Else
numligne = Sheets("Global").Range("B65536").End(xlUp).Row
lignefin = Range("r65536").End(xlUp).Row

Sheets("Global").Range("A" & numligne).EntireRow.Insert
Sheets("Global").Range("B" & numligne) = Cells(lignefin, 1)
Sheets("Global").Range("D" & numligne) = Cells(lignefin, 2) & " " & Cells(lignefin, 3)
Sheets("Global").Range("E" & numligne) = Cells(lignefin, 4)
Sheets("Global").Range("F" & numligne) = Cells(lignefin, 13)
Sheets("Global").Range("G" & numligne) = Cells(lignefin, 14)
Sheets("Global").Range("C" & numligne) = Cells(3, 18)
 
C

Compte Supprimé 979

Guest
Re : Copie de lignes avec variantes et conditions

Salut Geinoch,

Je n'ai pas trop suivi le fil de ta demande, mais je pense avoir fait ce que tu voulais ;)

Tu trouveras ci-joint ton fichier modifié.

A+
 

Pièces jointes

  • Geinoch - FORUMEX.ZIP
    43.3 KB · Affichages: 15

Geinoch

XLDnaute Occasionnel
Re : Copie de lignes avec variantes et conditions

Hmmm :confused: , quand je copie ta commande dans mon vrai excel, une erreur s'affiche au moment où il exécute LigFind (erreur de compilation: Sub ou fonction non définie) . Pourtant dans le tien sa fonctionne...

Cependant il y a un ou deux problèmes encore, le nouveau fichier ne met pas a jour le Statut et ne prend pas en compte les fonctions Si de cette section.
Genre si réalisation = C ou T --> "global" = C etc...
Il y aussi que la ligne ne se place pas à l'endroit exact et prend la mise en forme de l'entête.

Mais je suis vraiment content que tu sois apte à m'aider et merci pour les descriptions avec les ' ' ça m'aide beaucoup à comprendre ton cheminement, nous sommes bien prêt du but, alors je crois que je vais envoyer mon vrai fichier en zip sans donnée, tu comprendras certainement beaucoup mieux.
 

Pièces jointes

  • FORUM2.ZIP
    26.3 KB · Affichages: 10
  • FORUM2.ZIP
    26.3 KB · Affichages: 8
  • FORUM2.ZIP
    26.3 KB · Affichages: 9

Geinoch

XLDnaute Occasionnel
Re : Copie de lignes avec variantes et conditions

Bordel, j'essaye de comprendre, mais je trouve pas...
Es-ce que LigFind est une variable que tu définis toi-même ou bien c'est un objet VBA?

Et si c'est quelque chose que tu as définis, tu l'as fait où?

Private Sub CMDsend_Click()
Dim DerLig As Integer, LigSel As Integer
Dim LSearch As Integer, VSearch As String
Dim Sht As Worksheet
' Mise à Jour des variables
Set Sht = ActiveSheet
LigSel = Selection.Row
' Recherche la valeur de 'A' dans la feuille 'Golbal'
VSearch = Sht.Range("A" & LigSel)
LSearch = LigFind("Global", 2, VSearch)
If LSearch = 0 Then
' Pas de ligne trouvée, on insert donc une nouvelle ligne
DerLig = Sheets("Global").Range("B65536").End(xlUp).Row + 1
Else
' Une ligne à été trouvée
DerLig = LSearch + 1
End If
With Sheets("Global")
.Range("A" & DerLig).EntireRow.Insert
If LSearch = 0 Then
.Range("B" & DerLig) = VSearch
End If
.Range("D" & DerLig) = Sht.Range("B" & LigSel) & " " & Range("C" & LigSel) ' B5 & " " & C5 Concaténation
.Range("E" & DerLig) = Sht.Range("D" & LigSel) ' D5
.Range("F" & DerLig) = Sht.Range("M" & LigSel) ' M5
.Range("G" & DerLig) = Sht.Range("N" & LigSel) ' N5
.Range("H" & DerLig) = Sht.Range("G" & LigSel) ' Statut de réalisation
.Range("C" & DerLig) = Sht.Range("R3") ' Fin copie de données
If Sht.Range("G" & LigSel) <> "" Then
.Range("H" & DerLig) = Sht.Range("G" & LigSel) ' Statut de Réalisation
End If
If Sht.Range("K" & LigSel) <> "" Then
.Range("H" & DerLig) = Sht.Range("K" & LigSel) ' Statut de Validation
End If
If Sht.Range("O" & LigSel) <> "" Then
.Range("H" & DerLig) = Sht.Range("O" & LigSel) ' Statut d'Approbation
End If
End With
End Sub
 
C

Compte Supprimé 979

Guest
Re : Copie de lignes avec variantes et conditions

Re Geinoch,

Désolé je n'étais pas devant un PC.

Bordel, j'essaye de comprendre, mais je trouve pas...
Be cool, rien ne sert de s'énerver, on comprends encore moins bien

Es-ce que LigFind est une variable que tu définis toi-même ou bien c'est un objet VBA?
Et si c'est quelque chose que tu as définis, tu l'as fait où?
LigFind, est une fonction que j'ai défini dans le module "Fonctions" du fichier que j'ai mis en ligne.

Je regarde ton 2ème envoi :cool:

A+

Edit : modifs faites dans le fichier joint
Il y aura certainement des petites choses à régler par la suite
 

Pièces jointes

  • Geinoch - REGISTRE.zip
    29.8 KB · Affichages: 15
Dernière modification par un modérateur:

Geinoch

XLDnaute Occasionnel
Re : Copie de lignes avec variantes et conditions

Au début je comprenais pas ce que tu disais a propos du module... et la je me suis souvenu de mon cours au secondaire... Et j'ai trouvé ton module fonction... Et là je m'appercois que je manque beaucoup, mais beaucoup de compétence pour faire ce que tu as fais... =(

P.S.: Quelqu'un qui dit bordel au Québec n'est pas énervé =) Quelqu'un qui dit Tabarnak l'est =D
 

Geinoch

XLDnaute Occasionnel
Re : Copie de lignes avec variantes et conditions

Ok, bon la j'ai copier ton module, la copie se fait sans le messsage d'erreur... Mais le tout ne se copie pas au bon endroit. De plus, probablement que les problèmes que j'avais décelé dans ton fichier de départ seront toujours présent.

À suivre...


Edit

C'est étrange, pourtant tu lui dis bien d'aller à la dernière ligne, pourquoi es-ce qu'elle s'ajoute à la ligne 4 au lieu de 34?

Edit

Ok, selon ton application, il faut absolument qu'il y ai une cellule de la ligne sélectionné pour qu'elle se copie correctement. De plus il faut retirer le + 1 à .row...
Mais la ça c'est un problème... j'espère que c'est modifiable =|
 
Dernière édition:

Geinoch

XLDnaute Occasionnel
Re : Copie de lignes avec variantes et conditions

Ah, je n'avais pas vu ton fichier... héhé
Ouais, bien ça fonctionnerait pas mal comme ça. Y'a juste le fait que la ligne doit être sélectionné...

Maintenant, sais-tu comment je pourrais faire un bouton qui metterait à jour le tous? Ou je sais pas quelque chose qui pourrait faire à la place... C'est la dernière chose que je ne suis pas capable de faire... =( ensuite je vais pouvoir enfin avancer vite =)
 

Geinoch

XLDnaute Occasionnel
Re : Copie de lignes avec variantes et conditions

Bon finalement j'essais d'adapter ta commande faite précédemment pour que lorsque j'appuis sur le bouton MAJ, il recherche une valeur dans B.
Le problème c'est que si il trouve la ligne comment je peux lui dire qu'au lieu d'ajouter une ligne en dessous qu'il l'a remplace?


Là j'ai fait ça:
Private Sub CMDmaj_Click()
Dim DerLig As Integer, LigSel As Integer
Dim LSearch As Integer, VSearch As String
Dim Sht As Worksheet
' Mise à Jour des variables
Set Sht = ActiveSheet
LigSel = Selection.Row
' Recherche la valeur de 'B' dans la feuille 'Golbal'
VSearch = Sht.Range("B" & LigSel)
If VSearch = "" Then
MsgBox "Vous n'avez pas sélectionné de ligne ou la ligne sélectionnée, ne contient pas de valeur dans la cellule 'B'"
Range("A" & LigSel).Select
Exit Sub
End If
LSearch = LigFind("Global", 2, VSearch) ' Appelle la fonction dans le module
If LSearch = 0 Then
MsgBox "Cette ligne n'a pas été envoyé dans global!"
Else
DerLig = LSearch
End If
.Range("D" & DerLig) = Sht.Range("B" & LigSel) & " " & Sht.Range("C" & LigSel) ' B5 & " " & C5 Concaténation
.Range("E" & DerLig) = Sht.Range("D" & LigSel) ' D5
.Range("F" & DerLig) = Sht.Range("M" & LigSel) ' M5
.Range("G" & DerLig) = Sht.Range("N" & LigSel) ' N5
.Range("H" & DerLig) = Sht.Range("G" & LigSel) ' Statut de réalisation
.Range("C" & DerLig) = Sht.Range("R3") ' Fin copie de données
If Sht.Range("G" & LigSel) <> "" Then
.Range("H" & DerLig) = Sht.Range("G" & LigSel) ' Statut de Réalisation
End If
If Sht.Range("K" & LigSel) <> "" Then
.Range("H" & DerLig) = Sht.Range("K" & LigSel) ' Statut de Validation
End If
If Sht.Range("O" & LigSel) <> "" Then
.Range("H" & DerLig) = Sht.Range("O" & LigSel) ' Statut d'Approbation
End If
End With
End Sub

Mais il inscrit une erreur là où j'ai mias le rouge... AIdez-moi =(
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Copie de lignes avec variantes et conditions

Salut Geinoch,

Désolé de ne pas avoir suivi le fil, j'avais un peu de taf au bureau :D

Geinoch à dit:
Bon bien j'ai réussi!!!
Je remerci beaucoup BrunoM45 pour sa divine puissance!
A+ mec, merci encore
Divine puissance, faut quand même pas exagérer ;)
Pourvu que le ciel ne me tombe pas sur la tête :p

A+
 

Humansoft

XLDnaute Occasionnel
Re : Copie de lignes avec variantes et conditions

Voici le fichier avec une modification dans la première, il y avait un B en trop dans ta formule.

Fais un test et tiens-nous au courant.

Vincent

ooops, j'arrive trop tard, trop de boulôt.
Ne tiens pas compte de ma réponse.
 

Pièces jointes

  • FORUMEX.ZIP
    20.4 KB · Affichages: 19
  • FORUMEX.ZIP
    20.4 KB · Affichages: 19
  • FORUMEX.ZIP
    20.4 KB · Affichages: 20

Statistiques des forums

Discussions
312 843
Messages
2 092 758
Membres
105 526
dernier inscrit
Hiro