Code imcomplet
Résolu/Fermé
A voir également:
- Code imcomplet
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
13 réponses
thev
Messages postés
1882
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 octobre 2024
689
19 juil. 2016 à 19:05
19 juil. 2016 à 19:05
Bonjour,
Tout d'abord une remarque. Il manque la fin du code ou alors c'est un extrait et ces lignes me paraissent superflues
Ton problème est-il relatif à des cellules vides à l'intérieur d'une ligne ou à des lignes entièrement vides ?
Tout d'abord une remarque. Il manque la fin du code ou alors c'est un extrait et ces lignes me paraissent superflues
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Ton problème est-il relatif à des cellules vides à l'intérieur d'une ligne ou à des lignes entièrement vides ?
Bonsoir thev !
Avant tout merci de prendre en compte mon problème.
Mes lignes à copier vont de AB à AH. Dans les colonnes AE,AG,AH j’ai des formules qui prennent en compte les valeurs des colonnes adjacentes. Même vides ces lignes de AB à AH sont copiées et collées sans les formules. Je le remarque lorsque je fais des tris sur mes onglets de destination.
Avant tout merci de prendre en compte mon problème.
Mes lignes à copier vont de AB à AH. Dans les colonnes AE,AG,AH j’ai des formules qui prennent en compte les valeurs des colonnes adjacentes. Même vides ces lignes de AB à AH sont copiées et collées sans les formules. Je le remarque lorsque je fais des tris sur mes onglets de destination.
thev
Messages postés
1882
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 octobre 2024
689
Modifié par thev le 19/07/2016 à 22:51
Modifié par thev le 19/07/2016 à 22:51
Bonsoir,
ce code modifié vous évitera de copier les lignes vides de la plage utilisée des colonnes AB à AH
ce code modifié vous évitera de copier les lignes vides de la plage utilisée des colonnes AB à AH
--
Sub encaissé1()
Sheets("mouvement caisse").Visible = True
Sheets("mouvement caisse").Select
ActiveSheet.Unprotect
Sheets("saisie").Visible = True
Sheets("saisie").Select
ActiveSheet.Unprotect
Dim plage_à_copier As Range, première_cellule_vide As Range, plage_collée As Range
Set xl = Excel.Application 'application Excel
For Each ligne In Sheets("caisse").UsedRange.Columns("AB:AH").Rows 'plage des lignes utilisées dans les colonnes AB à AH
If Join(xl.Transpose(xl.Transpose(ligne.Value)), "") <> Empty _
And ligne.Row <> 1 Then 'si la ligne n'est pas vide et n'est pas la première
'stockage des lignes à copier
If plage_à_copier Is Nothing Then Set plage_à_copier = ligne _
Else Set plage_à_copier = Union(plage_à_copier, ligne)
Next ligne
plage_à_copier.Copy
With Sheets("mouvement caisse")
Set première_cellule_vide = .[A:A].Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext)
If première_cellule_vide Is Nothing Then Set première_cellule_vide = .[A1]
End With
première_cellule_vide.PasteSpecial Paste:=xlPasteValues, Transpose:=False
plage_à_copier.Copy
With Sheets("SAISIE")
Set première_cellule_vide = .[A:A].Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext)
If première_cellule_vide Is Nothing Then Set première_cellule_vide = .[A1]
End With
première_cellule_vide.PasteSpecial Paste:=xlPasteValues, Transpose:=False
Set plage_collée = première_cellule_vide.Resize(plage_à_copier.Rows.Count, plage_à_copier.Columns.Count)
Sheets("mouvement caisse").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("A1").Select
Sheets("mouvement caisse").Visible = False
Sheets("saisie").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("A1").Select
Sheets("saisie").Visible = False
Sheets("caisse").Select
Range("AB2:AB36,AD2:AD36,AF2:AF36,AI2:AI36").Select
Range("AD2").Activate
Selection.ClearContents
Sheets("saisie").Visible = True
Sheets("saisie").Select
Range("A1:h6000").Select
Selection.Copy
Range("L1").Select
End Sub
Merci pour le temps que vous me consacrez
Mais j'ai le message "erreur de compilation variable non définie" qui arrive à la ligne:
Set xl = Excel.Application
Prenez votre temps pour me répondre, demain sera un autre jour.
Merci
Mais j'ai le message "erreur de compilation variable non définie" qui arrive à la ligne:
Set xl = Excel.Application
Prenez votre temps pour me répondre, demain sera un autre jour.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
thev
Messages postés
1882
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 octobre 2024
689
19 juil. 2016 à 22:55
19 juil. 2016 à 22:55
ajouter
Dim xl as Excel.Application
thev
Messages postés
1882
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 octobre 2024
689
19 juil. 2016 à 23:21
19 juil. 2016 à 23:21
ajouter la définition de ligne
Dim xl As Excel.Application
Dim ligne As Range, plage_à_copier As Range, première_cellule_vide As Range, plage_collée As Range
Merci pour ton aide, surtout à des heures aussi tardives,
Ci-dessous le code modifié. Mais maintenant j'ai le message" Next sans For" qui apparait à la ligne Next ligne du code.
Sheets("mouvement caisse").Visible = True
Sheets("mouvement caisse").Select
ActiveSheet.Unprotect
Sheets("saisie").Visible = True
Sheets("saisie").Select
ActiveSheet.Unprotect
Dim xl As Excel.Application
Dim ligne As Range, plage_à_copier As Range, première_cellule_vide As Range, plage_collée As Range
Set xl = Excel.Application 'application Excel
If Join(xl.Transpose(xl.Transpose(ligne.Value)), "") <> Empty Then 'si la ligne n'est pas vide
'stockage des lignes à copier
If plage_à_copier Is Nothing Then Set plage_à_copier = ligne _
Else Set plage_à_copier = Union(plage_à_copier, ligne)
End If
Next ligne
plage_à_copier.Copy
With Sheets("mouvement caisse")
Set première_cellule_vide = .[A:A].Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext)
If première_cellule_vide Is Nothing Then Set première_cellule_vide = .[A1]
End With
première_cellule_vide.PasteSpecial Paste:=xlPasteValues, Transpose:=False
plage_à_copier.Copy
With Sheets("SAISIE")
Set première_cellule_vide = .[A:A].Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext)
If première_cellule_vide Is Nothing Then Set première_cellule_vide = .[A1]
End With
première_cellule_vide.PasteSpecial Paste:=xlPasteValues, Transpose:=False
Set plage_collée = première_cellule_vide.Resize(plage_à_copier.Rows.Count, plage_à_copier.Columns.Count)
Sheets("mouvement caisse").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("A1").Select
Sheets("mouvement caisse").Visible = False
Sheets("saisie").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("A1").Select
Sheets("saisie").Visible = False
Sheets("caisse").Select
Range("AB2:AB36,AD2:AD36,AF2:AF36,AI2:AI36").Select
Range("AD2").Activate
Selection.ClearContents
Sheets("saisie").Visible = True
Sheets("saisie").Select
Range("A1:h6000").Select
Selection.Copy
Range("L1").Select
Ci-dessous le code modifié. Mais maintenant j'ai le message" Next sans For" qui apparait à la ligne Next ligne du code.
Sheets("mouvement caisse").Visible = True
Sheets("mouvement caisse").Select
ActiveSheet.Unprotect
Sheets("saisie").Visible = True
Sheets("saisie").Select
ActiveSheet.Unprotect
Dim xl As Excel.Application
Dim ligne As Range, plage_à_copier As Range, première_cellule_vide As Range, plage_collée As Range
Set xl = Excel.Application 'application Excel
If Join(xl.Transpose(xl.Transpose(ligne.Value)), "") <> Empty Then 'si la ligne n'est pas vide
'stockage des lignes à copier
If plage_à_copier Is Nothing Then Set plage_à_copier = ligne _
Else Set plage_à_copier = Union(plage_à_copier, ligne)
End If
Next ligne
plage_à_copier.Copy
With Sheets("mouvement caisse")
Set première_cellule_vide = .[A:A].Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext)
If première_cellule_vide Is Nothing Then Set première_cellule_vide = .[A1]
End With
première_cellule_vide.PasteSpecial Paste:=xlPasteValues, Transpose:=False
plage_à_copier.Copy
With Sheets("SAISIE")
Set première_cellule_vide = .[A:A].Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext)
If première_cellule_vide Is Nothing Then Set première_cellule_vide = .[A1]
End With
première_cellule_vide.PasteSpecial Paste:=xlPasteValues, Transpose:=False
Set plage_collée = première_cellule_vide.Resize(plage_à_copier.Rows.Count, plage_à_copier.Columns.Count)
Sheets("mouvement caisse").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("A1").Select
Sheets("mouvement caisse").Visible = False
Sheets("saisie").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("A1").Select
Sheets("saisie").Visible = False
Sheets("caisse").Select
Range("AB2:AB36,AD2:AD36,AF2:AF36,AI2:AI36").Select
Range("AD2").Activate
Selection.ClearContents
Sheets("saisie").Visible = True
Sheets("saisie").Select
Range("A1:h6000").Select
Selection.Copy
Range("L1").Select
thev
Messages postés
1882
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 octobre 2024
689
20 juil. 2016 à 15:28
20 juil. 2016 à 15:28
ci-joint code corrigé
Sub encaissé1()
Sheets("mouvement caisse").Visible = True
Sheets("mouvement caisse").Select
ActiveSheet.Unprotect
Sheets("saisie").Visible = True
Sheets("saisie").Select
ActiveSheet.Unprotect
Dim xl As Excel.Application
Dim ligne As Range, plage_à_copier As Range, première_cellule_vide As Range, plage_collée As Range
Set xl = Excel.Application 'application Excel
For Each ligne In Sheets("caisse").UsedRange.Columns("AB:AH").Rows 'plage des lignes utilisées dans les colonnes AB à AH
If Join(xl.Transpose(xl.Transpose(ligne.Value)), "") <> Empty _
And ligne.Row <> 1 Then 'si la ligne n'est pas vide et n'est pas la première
'stockage des lignes à copier
If plage_à_copier Is Nothing Then Set plage_à_copier = ligne _
Else Set plage_à_copier = Union(plage_à_copier, ligne)
End If
Next ligne
plage_à_copier.Copy
With Sheets("mouvement caisse")
Set première_cellule_vide = .[A:A].Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext)
If première_cellule_vide Is Nothing Then Set première_cellule_vide = .[A1]
End With
première_cellule_vide.PasteSpecial Paste:=xlPasteValues, Transpose:=False
plage_à_copier.Copy
With Sheets("SAISIE")
Set première_cellule_vide = .[A:A].Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext)
If première_cellule_vide Is Nothing Then Set première_cellule_vide = .[A1]
End With
première_cellule_vide.PasteSpecial Paste:=xlPasteValues, Transpose:=False
Set plage_collée = première_cellule_vide.Resize(plage_à_copier.Rows.Count, plage_à_copier.Columns.Count)
Sheets("mouvement caisse").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("A1").Select
Sheets("mouvement caisse").Visible = False
Sheets("saisie").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("A1").Select
Sheets("saisie").Visible = False
Sheets("caisse").Select
Range("AB2:AB36,AD2:AD36,AF2:AF36,AI2:AI36").Select
Range("AD2").Activate
Selection.ClearContents
Sheets("saisie").Visible = True
Sheets("saisie").Select
Range("A1:h6000").Select
Selection.Copy
Range("L1").Select
End Sub
Bonjour thev,
Je ne sais comment te remercier tout fonctionne à merveille.
Il me manque encore une formule pour finaliser le petit outil de gestion de ma nouvelle association. Je me permets de te la soumettre en espérant ne pas trop abuser.
Il s’agit de la formule « sommeproduit » avec 2 conditions.
En cellule G16 je saisi une date.
En colonne A j’ai toutes mes dates
En colonne E j’ai le chiffre 0
Si la date en G16 est trouvée dans la colonne A et que le chiffre 0 en colonne E correspond, alors en multiplie les chiffres des colonnes D et F correspondants.
Résultat, somme de tous les produits trouvés à cette date.
Je ne sais comment te remercier tout fonctionne à merveille.
Il me manque encore une formule pour finaliser le petit outil de gestion de ma nouvelle association. Je me permets de te la soumettre en espérant ne pas trop abuser.
Il s’agit de la formule « sommeproduit » avec 2 conditions.
En cellule G16 je saisi une date.
En colonne A j’ai toutes mes dates
En colonne E j’ai le chiffre 0
Si la date en G16 est trouvée dans la colonne A et que le chiffre 0 en colonne E correspond, alors en multiplie les chiffres des colonnes D et F correspondants.
Résultat, somme de tous les produits trouvés à cette date.
thev
Messages postés
1882
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 octobre 2024
689
Modifié par thev le 20/07/2016 à 21:36
Modifié par thev le 20/07/2016 à 21:36
Essayer cette formule matricielle
rappel : pour entrer une formule matricielle, SHIFT + CRTL + ENTREE
{=SOMMEPROD(ABS(A:A=G16);ABS(NON(E:E));D:D;F:F)}
rappel : pour entrer une formule matricielle, SHIFT + CRTL + ENTREE
Bonsoir thev,
Ta formule fonctionne, mais j'ai omis de dire que toutes mes colonnes sauf la cellule G16 se trouve sur un autre onglet nommé "mouvement caisse".
Et je suis tellement nul que je n'arrive pas à intégrer ce nom dans la formule.
Ta formule fonctionne, mais j'ai omis de dire que toutes mes colonnes sauf la cellule G16 se trouve sur un autre onglet nommé "mouvement caisse".
Et je suis tellement nul que je n'arrive pas à intégrer ce nom dans la formule.